在SQL Server中,如何获取每组参数的最新条目集?

时间:2018-05-18 14:35:33

标签: sql sql-server tsql

我有一张像

这样的表格
 TIMESTAMP PARAMETER1 PARAMETER2 VALUE
 --------------------------------------
 111       2          3          12.00
 222       2          3          13.00
 333       2          3          13.00
 111       3          4          15.00
 222       3          4          19.00
 010       3          5          20.00

在SQL Server中,我需要构建一个返回多行的查询,每个PARAMETER1和PARAMETER2组合一行,并且仅针对相应组合显示的最新时间戳。

对于上面的示例,对于组合{PARAMETER1,PARAMETER2} = {2,3},最新时间戳为333,{3,4}为222,而{3,5}为010,所以我和#39;想写一个返回的查询:

 TIMESTAMP PARAMETER1 PARAMETER2 VALUE
 --------------------------------------
 333       2          3          13.00
 222       3          4          19.00
 010       3          5          20.00

1 个答案:

答案 0 :(得分:2)

如果不是成千上万次,这已被问及并回答了数百次。但是输入答案比找到副本更容易。

select TIMESTAMP
    , PARAMETER1
    , PARAMETER2
    , VALUE
from
(
    select TIMESTAMP
        , PARAMETER1
        , PARAMETER2
        , VALUE
        , RowNum = ROW_NUMBER() over (partition by PARAMETER1, PARAMETER2 order by TIMESTAMP desc)
)x
where x.RowNum = 1