GROUP BY不包含特定列

时间:2014-08-06 08:37:42

标签: sql-server tsql

我在MSSQL中有以下语句

SELECT a, b, MAX(t)
FROM table
GROUP BY a, b

我想要的只是显示结果中每个特定行的c和d列。我怎么能这样做?

1 个答案:

答案 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值的行(并且,正如我所说,此变体无视关系)。