好吧,那么,让我假装我有一个这样的表:
Name Rank Score
Adam 1 10
Adam 2 20
Adam 3 14
Jane 2 11
Jane 3 14
Jane 4 45
Rick 1 49
Rick 3 24
Rick 5 12
Run Code Online (Sandbox Code Playgroud)
我需要在单个表中生成一组结果,其中SUMs在一列中排名为1和2,在第二列中排名为3+.我可以将它作为两个单独的SQL语句来执行,如下所示:
SELECT Name, SUM(Score) AS Score1
FROM Table
WHERE Rank < 3
GROUP BY Name
Run Code Online (Sandbox Code Playgroud)
和
SELECT Name, SUM(Score) AS Score2
FROM Table
WHERE Rank > 2
GROUP BY Name
Run Code Online (Sandbox Code Playgroud)
但我想不出任何方法来生成一个导致单个表的SQL语句,可能如下所示:
Name Score1 Score2
Adam 30 14
Jane 11 59
Rick 49 36
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏.谢谢!
假设Ranks是整数:
SELECT Name,
sum(case when Rank in (1, 2) then Score else null end) as Score1,
sum(case when Rank < 1 or Rank > 2 then Score else null end) as Score2
FROM Table
GROUP BY Name
Run Code Online (Sandbox Code Playgroud)