Объединение двух групп в SQL
Я хочу объединить показатели для двух групп в одном поле, в то время как другие группы в этом поле останутся сами по себе. Как мне это сделать?
Я собираю операционные метрики и группирую их по разным модулям. У меня есть модули A,B, C и D. Я хочу объединить модули B и C, чтобы получить показатели для модуля A, модуля D и модулей B_C вместе.
SELECT pod, volume
FROM table
WHERE Date.closed_week BETWEEN STRFTIME_USEC(DATE_ADD(TIME_USEC_TO_WEEK(NOW(), 0), -4, 'Week'), '%F') AND STRFTIME_USEC(DATE_ADD(TIME_USEC_TO_WEEK(NOW(), 0), -1, 'Week'), '%F')
GROUP BY 1
Вышеуказанное дает мне объем для модулей A,B, C и D. Однако я ищу способ объединить тома для модулей B и C в один ряд. (Очевидно, это не мой реальный код, но его должно быть достаточно, чтобы понять суть.)
1 ответ
Предполагая, что вы используете сумму для агрегирования (не ясно из вопроса), вы можете использовать случай суммы следующим образом:
SELECT sum(case when pod = 'A' then volume else 0 end) as PodA
, sum(case when pod in ('B', 'C') then volume else 0 end) as PodBC
, sum(case when pod = 'D' then volume else 0 end) as PodD
FROM table
WHERE Date.closed_week BETWEEN STRFTIME_USEC(DATE_ADD(TIME_USEC_TO_WEEK(NOW(), 0), -4, 'Week'), '%F') AND STRFTIME_USEC(DATE_ADD(TIME_USEC_TO_WEEK(NOW(), 0), -1, 'Week'), '%F')