我发现了一个和这个问题非常相似的问题,但是使用的功能似乎是Oracle独有的。我希望在SQL Server中执行此操作。
我有一张这样的桌子:
MyTable
--------------------
MyTableID INT PK
UserID INT
Counter INT
每个用户可以有多行,具有不同的
Counter
在每一行。我需要找到最高的一行
计数器
每个用户的值。
如何在SQL Server 2005中执行此操作?
我能想到的最好的方法是查询返回
MAX(Counter)
对于每一个
UserID
但我需要整行,因为为了简单起见,表定义中没有显示此表中的其他数据。
编辑:
这篇文章中的一些答案引起了我的注意,我忘记了一个重要的细节。可以有2+行,其中一个用户ID可以有相同的最大计数器值。下面的例子更新了预期的数据/输出应该是什么。
有了这些数据:
MyTableID UserID Counter
--------- ------- --------
1 1 4
2 1 7
3 4 3
4 11 9
5 11 3
6 4 6
...
9 11 9
对于重复的max值,我希望得到这些结果,请按照SQL Server选择它们的顺序选择第一个结果。在这种情况下,返回哪些行并不重要,只要用户ID/计数器对是不同的:
MyTableID UserID Counter
--------- ------- --------
2 1 7
4 11 9
6 4 6