SQL对同一个人按年份对最新记录进行排名/排序

时间:2018-08-02 16:59:21

标签: sql sql-server

我想做的只是获得每年的最新记录,

SELECT pid, obsdate, obsvalue
FROM CPSFactDimension.Fact.LiverFunction
WHERE HDID = 40
    AND obsdate >= '2006/01/01'
    AND obsdate < '2017/12/31'

一些结果看起来像这样,但是仅过滤同一个人每年的最新记录的一个好主意是什么?

https://i.stack.imgur.com/2MUDk.png

寻找这样的东西

https://i.stack.imgur.com/Z1eOT.png

1 个答案:

答案 0 :(得分:1)

您可以使用row_number()函数:

select t.*
from (select *, row_number() over (partition by pid, year(obsdate) order by obsdate desc) seq 
      from table t
     ) t
where seq = 1;