今天遇到需要在多条有重复字段的记录中选取修改日期最接近现在的字段,如下:
我想要选取CPDM,FBQD相同,KSRQ离现在最近的那条记录,选出的记录应该为1、2、3,而4、5、6、7应该舍弃掉。
我们使用这条语句:
Row_Number() Over(Partition By Cpdm, Fbqd Order By Ksrq Desc)
得到的结果为:
再用Rk = 1做个限定,就可以得出最终结果:
完整的SQL语句为:
Select b.*,
b.Fbqd,
b.Qzsm
From (Select Row_Number() Over(Partition By Cpdm, Fbqd Order By Ksrq Desc) Rk,
Cpid,
Cpdm,
Djxh,
Djmc,
Fbqd,
Djlx,
Ksrq,
Zzrq,
Dyzq,
Dj,
Sfkysy,
Syzq
From t_biao) b
Where b.cpdm = 'ZX0001'
and b.Rk = 1
and b.fbqd not in ('Z')