我在MSSQL中有以下语句
SELECT a, b, MAX(t)
FROM table
GROUP BY a, b
我想要的只是显示结果中每个特定行的c和d列。我怎么能这样做?
答案 0 :(得分:3)
听起来你正在寻找ROW_NUMBER()
或RANK()
(前者会忽略关系,后者会包含它们),例如:
;With Ranked as (
SELECT a,b,c,d,t,
ROW_NUMBER() OVER (PARTITION BY a,b
ORDER BY t desc) as rn
FROM table
)
SELECT * from Ranked where rn = 1
对于a,b
列的每个唯一组合,将返回一行,选择其他值,使其来自具有最高t
值的行(并且,正如我所说,此变体无视关系)。