Sql 每种类型的单位记录

Sql 每种类型的单位记录,sql,sql-server,Sql,Sql Server,在SQL Server 2008上,我需要在下表中选择每个人的第一个不同事件: ID WeeklyAvg MonthlyAvg 1 8 0 1 7 3 2 9 1 2 6 4 2 6 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
我如何做到这一点?
如果我可以避免将所有“distinct”列都放在group by子句中,那就更好了,因为sql server限制这样做。

感谢您的帮助。

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


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

您已经在这里工作了一年多,现在应该知道如何显示您首先尝试过的某种代码。第二,你怎么知道表中第一个出现的是什么?似乎没有排序顺序。我不需要排序顺序,因为我不希望distinct为每种记录类型返回多个集合。但是,如果有任何异常值,顺序将无关紧要。胡说;如果没有排序顺序,SQL Server很可能返回
1,7,3
,而不是
1,8,0
+1,但请修复语法错误-
OVER()
需要
order BY
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