如果我有这样的数据:
Id, Team1, Team2, Score1, Score2
--------------------------------
1, Aaa, Bbb, 10, 8
2, Aaa, Bbb, 6, 8
3, Aaa, Bbb, 6, 5
4, Bbb, Aaa, 9, 7
5, Aaa, Ccc, 12, 6
如何获得团队之间得分差异的列(运行聚合)?例子:
Id, Team1, Team2, Score1, Score2 Abs(DIFF)
-------------------------------- ---------
1, Aaa, Bbb, 10, 8 2
2, Aaa, Bbb, 6, 8 0
3, Aaa, Bbb, 6, 5 1
4, Bbb, Aaa, 7, 9 3
5, Aaa, Ccc, 12, 6 6
请注意上面示例中的两件事:
- 对之间的团队顺序可能会有所不同(例如在第 1 行和第 4 行之间)
- 表可能包含许多团队对
是否可以在不使用游标或更新技巧的情况下获取此 DIFF 列?查询必须在 SQL Server 2008 上运行。
我很少做数据库工作,所以欢迎简单的解释。
更新附加说明:
- 在第一行,DIFF 为 2,因为 Aaa 队以 2 分获胜
- 在第二排,DIFF 为 0,因为这次 Bbb 队以两分优势获胜
- 在第三行,DIFF 为 1,因为 Aaa 队再次获胜(领先一分)
- 在第四排,DIFF 为 3,因为 Aaa 队再次获胜(领先 2 分)
因此,通过查看 DIFF 值,人们应该能够回答“当前球队之间的得分差异是多少?”这样的问题。