-4

在 SQL Server 2008 上,我需要在下表中选择每个人的第一个不同的匹配项:

ID           WeeklyAvg    MonthlyAvg
1            8            0
1            7            3
2            9            1
2            6            4
2            6            4
.......................
....................

输出应该是:

1       8       0
2       9       1

我如何实现这一目标?
如果我可以避免将所有“不同”列放在 group by 子句中,那就更好了,因为 sql server 限制了这一点。
感谢帮助。

4

1 回答 1

1

您可以使用ROW_NUMBER获取“第一”行:

SELECT ID, WeeklyAvg, MonthlyAvg
FROM
(
SELECT ID, WeeklyAvg, MonthlyAvg,
     ROW_NUMBER() OVER (PARTITION BY ID ORDER BY ID) RowNum
     FROM {table}
) A
WHERE RowNum = 1

请注意,除非您指定特定顺序,否则“第一”行将是任意的。

于 2013-11-12T17:38:57.960 回答