首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

oracle的select取最新日期有关问题

2012-03-11 
oracle的select取最新日期问题id name descstsdt1name1 desc120080202 22:00:001name1 desc220080203 23:0

oracle的select取最新日期问题
id name desc stsdt
1 name1 desc1 20080202 22:00:00
1 name1 desc2 20080203 23:00:00
1 name1 desc3 20080303 22:00:00
2 name2 desc1 20080202 22:00:00
2 name2 desc2 20080204 22:00:00
2 name3 desc3 20080205 22:00:00

有如上数据,想要的结果是这样的
1 name1 desc3 20080303 22:00:00
2 name3 desc3 20080205 22:00:00
就是取同id中最新日期的那条

注:同id的数据有N>=1条,存在不同id
主要是id和stsdt决定全部。

[解决办法]
select a.* from table a
where not exists(select 1 from table b where b.id = a.id and b.stsdt > a.stsdt)
[解决办法]
1楼正解,让我想起来删除重复数据的方法
[解决办法]
()里面貌似取不到表的别名a的吧?
[解决办法]
select *
from (select A.*,
row_number() over(partition by id order by stsdt desc) AS SHOW
from 表 as A
) b
 where b.SHOW = 1

上面SQL可以。
[解决办法]

引用楼主 advancejar 的帖子:
id name desc stsdt
1 name1 desc1 20080202 22:00:00
1 name1 desc2 20080203 23:00:00
1 name1 desc3 20080303 22:00:00
2 name2 desc1 20080202 22:00:00
2 name2 desc2 20080204 22:00:00
2 name3 desc3 20080205 22:00:00

有如上数据,想要的结果是这样的
1 name1 desc3 20080303 22:00:00
2 name3 desc3 20080205 22:00:00
就是取同id中最新日期的那条

注:同id的数据有N>=1…

热点排行