【发布时间】:2014-11-26 20:56:38
【问题描述】:
我有一个包含 GameID, GoalID, PlayerID, Assist1ID, Assist2ID 列的表(所有整数)。 PlayerID 翻译为实际进球的人的ID,但Assist1ID 和Assist2ID 也可以获得球员ID。
我正在尝试获取具有不同 PlayerID 的数据集(来自 PlayerID 列或任一助攻列)、进球数(PlayerID 列)和助攻数(其中实际上是 Assist1 和 Assist2 发生 playerID 时计数列的总和)。 PlayerID 永远不会出现在这些列中的一个以上。
我一直在尝试几种方法,主要是使用 UNION ALL,以及一些 SUM/CASE,但我就是不明白。我应该为此使用临时表,还是有办法检查行,如果PlayerID。
示例:(请注意,GoalID 和 GameID 在这种情况下并不重要)
GameID | GoalID | PlayerID | Assist1ID | Assist2ID
1 | 1 | 1876 | 2098 | 1097
1 | 2 | 2098 | 1829 | 1876
1 | 3 | 2098 | 1876 | ----
我的查询应该返回:
PlayerID | Goals | Assists
1876 | 1 | 2
2098 | 2 | 1
1829 | 0 | 1
1097 | 0 | 1
等
这真的可能吗,还是我必须在代码部分做一些工作?
【问题讨论】:
-
我猜你可能在其他表中有玩家 ID。你可以很容易地加入这个表。
-
我没有解决方案,但我创建了一个 SQL 小提琴,它至少为任何想要查看的人提供了架构和示例数据:sqlfiddle.com/#!6/11e3b/1/0
标签: sql-server count multiple-columns