SQL: вычислить несколько строк для получения результата - PullRequest
0 голосов
/ 19 марта 2019

Как получить таблицу результатов путем вычисления нескольких строк?

Name     Type     Value
------------------------------
Name1    Plus     5000
Name1    Minus    1000
Name2    Plus     3000
Name2    Minus    2000

Желаемый результат:

Name     Value(Plus-Minus) 
------------------------------
Name1    4000
Name2    1000

Ответы [ 2 ]

2 голосов
/ 19 марта 2019

Используйте условное агрегирование и возьмите разницу всех значений «плюс» минус все значения «минус» для каждой группы имен записей.

SELECT
    Name,
    SUM(CASE WHEN Type = 'Plus' THEN [Value] ELSE 0 END) -
    SUM(CASE WHEN Type = 'Minus' THEN [Value] ELSE 0 END) AS diff
FROM yourTable
GROUP BY
    Name;
1 голос
/ 19 марта 2019

Вы можете использовать условное агрегирование:

SELECT Name,
       SUM(CASE WHEN Type = 'Plus' THEN Value
                WHEN Type = 'Minus' THEN - Value
                ELSE 0
           END) as total
FROM t
GROUP BY Name;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...