Объединение двух групп в 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')
Другие вопросы по тегам