【发布时间】:2015-08-24 21:57:06
【问题描述】:
我有一个包含 TeamId、GameId、IsWin 和 IsLoss 列的集合。我想编写一个查询,不仅总结每个团队的输赢,而且我还想创建一个列来唯一标识具有相同输赢数量的团队的组 .换句话说,如果一支球队的胜负数与其他一支或更多支球队相同,那么他们应该共享同一个“TieGroup”
例如,如果我总结输赢,按Wins DESC, Losses ASC排序,得到这个结果:
Team W L
Team1 4 0
Team2 4 0
Team3 3 1
Team4 1 3
Team5 0 4
Team6 0 4
然后在我添加列来分组并列球队后,我会期待这个结果
Team W L TieGroup
Team1 4 0 1
Team2 4 0 1
Team3 3 1 2
Team4 1 3 3
Team5 0 4 4
Team6 0 4 4
Team1 和 Team2 并列,因此属于同一组。 Team3 和 Team4 的记录与其他任何团队都不同,因此他们各自拥有自己的小组。 Team5 和 Team6 也打成平手,所以他们在同一组中。
我该怎么做?我尝试使用row_count() 和rank(),但没有得到我想要的结果。
【问题讨论】:
-
下次尝试提供SqlFiddle 之类的内容,以便我们更快地给您答复
-
DENSE_RANK()怎么样? -
我认为 rank() 可以完成这项工作,您尝试过什么?
-
感谢@JuanCarlosOropeza,我不知道 SqlFiddle 存在。下次一定会用。
标签: sql sql-server sql-server-2012