sql сумма группы по нескольким столбцам - PullRequest
3 голосов
/ 03 июня 2019

Я пытаюсь выиграть в игровых турнирах.Есть несколько турниров, и в каждой команде есть два игрока, player1 и player2.При регистрации любой игрок может находиться в позиции player1 или Player2.Мне нужно суммировать очки, заработанные за турнир, когда те же два игрока объединились.

Tournament_ID|Player1|Player2|Points
------------------------------------
1            |Smith  |Green  |8
1            |Brown  |Peck   |3
1            |Jones  |Healy  |2

2            |Smith  |Green  |5
2            |Peck   |Brown  |3
2            |Jones  |Healy  |1

3            |Healy  |Jones  |9
3            |Smith  |Green  |5
3            |Peck   |Brown  |3

Результаты должны выглядеть следующим образом:

Place  Team              Total Points
1      Smith & Green        18
2      Jones & Healy        12
3      Brown & Peck          9

1 Ответ

4 голосов
/ 03 июня 2019

Вот один из способов:

WITH cte AS (
    SELECT
        CASE WHEN Player1 < Player2 THEN Player1 ELSE Player2 END AS Player1,
        CASE WHEN Player1 < Player2 THEN Player2 ELSE Player1 END AS Player2,
        Points
    FROM yourTable
)

SELECT
    ROW_NUMBER() OVER (ORDER BY SUM(Points) DESC) Place,
    Player1 + ' & ' + Player2,
    SUM(Points) AS [Total Points]
FROM cte
GROUP BY
    Player1 + ' & ' + Player2;

enter image description here

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...