请教一个sql怎么写???

[复制链接]
查看11 | 回复8 | 2014-9-12 22:37:43 | 显示全部楼层 |阅读模式
12345
C0000610
AA
CM1050J50
8/22/2004

12345
C0000610
BB
G9CH20PT
8/22/2004

12345
C0000610
CC
CCHH220JT
8/22/2004

48700
C0000610
BB
G85C1220J
7/11/2005

35490
C0000610
CC
CC1H220JT
12/15/2004

需要选出第一,四,五行。
即选出最近变化的一条纪录
请个位帮帮忙的说。谢了
回复

使用道具 举报

千问 | 2014-9-12 22:37:43 | 显示全部楼层
说实话,我看晕了!
1,需要选出1,4,5行
2,还要选出最近变化的 1 条记录……
回复

使用道具 举报

千问 | 2014-9-12 22:37:43 | 显示全部楼层
呵呵,不好意思写的不明确。我所说的两个条件是一回事,没有表述清楚。
结果就是要选出第一,四,五行出来。
回复

使用道具 举报

千问 | 2014-9-12 22:37:43 | 显示全部楼层
关键是在第三列
回复

使用道具 举报

千问 | 2014-9-12 22:37:43 | 显示全部楼层
按第一列分组,按第5列排序,每组取一列,是这样的吗?
回复

使用道具 举报

千问 | 2014-9-12 22:37:43 | 显示全部楼层
应该是按第三列分组,第五列排序,取出其时间最近的。
按第三列:
因为对AA,08/22/2004是最近的一条纪录,
对BB,07/11/2005是最近的一条纪录,
对CC,12/15/2004是最近的一条纪录。
不知道怎么搞定他。。。
回复

使用道具 举报

千问 | 2014-9-12 22:37:43 | 显示全部楼层
如果同一天对同样的AA或者BB或者CC,有两条或者更多的记录时间一样,你怎么办?
若要都取出,将下面的row_numbere()换成rank()
[php]
select c1,c2,c3,c4,c5 from
(
select c1,c2,c3,c4,c5,row_number() over(partition by c3 order by c5 desc) r from t
)
where r=1
...   
[/php]
回复

使用道具 举报

千问 | 2014-9-12 22:37:43 | 显示全部楼层
时间是精确到秒的(我把它简化了),所以基本上不会有这种情况
回复

使用道具 举报

千问 | 2014-9-12 22:37:43 | 显示全部楼层
select a,b,c,d,e from (
select a,b,c,d,e,row_number()over(partition by a order by c)rn
where rn = 1 ) t
oder by a
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行