SQL - сумма нескольких строк с учетом типа - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть таблица, которая выглядит примерно так:

+========================================================+
|    Number   |    Date     |    Liter    |     Type      |
+=========================================================+
|       1     | 2018-11-01  |      1.0    |       A       |
|       2     | 2018-11-01  |      2.0    |       A       |
|       3     | 2018-11-01  |      3.0    |       B       |
|       1     | 2018-11-02  |      4.0    |    NULL       |
|       2     | 2018-11-02  |      5.0    |       B       |
|       3     | 2018-11-02  |      6.0    |    NULL       |
|       1     | 2018-11-03  |      7.0    |       B       |
|       2     | 2018-11-03  |      8.0    |       B       |
|       3     | 2018-11-03  |      9.0    |    NULL       |
+---------------------------------------------------------+

И мне нужно что-то такое, с WHERE Date LIKE '2018-11-%'

+========================================================+
|  Number  |  SumOfTypeA  |  SumOfTypeB  |  SumOfTypeNULL |
+=========================================================+
|     1    |      1.0     |      7.0     |       4.0      |
|     2    |      2.0     |     13.0     |      NULL      |
|     3    |     NULL     |      3.0     |      15.0      |
+---------------------------------------------------------+

Есть идеи для этого запроса?

1 Ответ

0 голосов
/ 13 ноября 2018

Вы можете выполнить условное агрегирование, используя выражения SUM() и CASE..WHEN:

SELECT
  Number,
  SUM(CASE WHEN Type = 'A' THEN Liter END) AS SumOfTypeA,
  SUM(CASE WHEN Type = 'B' THEN Liter END) AS SumOfTypeB,
  SUM(CASE WHEN Type IS NULL THEN Liter END) AS SumOfTypeNull
FROM your_table
WHERE Date LIKE '2018-11-%'
GROUP BY Number
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...