https://leetcode.com/problems/reformat-department-table/description/ Easy

Условие

Дана таблица Department со столбцами:

column type описание
id int идентификатор отдела
revenue int доход отдела за указанный месяц
month varchar название месяца, значения из ['Jan','Feb','Mar',…,'Dec']

(id, month) — составной первичный ключ.

Таблица содержит информацию о доходах каждого отдела по месяцам.

Напишите SQL-запрос, который преобразует эту таблицу так, чтобы каждая строка содержала id и 12 отдельных столбцов Jan_Revenue, Feb_Revenue, …, Dec_Revenue. Порядок строк может быть любым.

Решение

SELECT
  id,
  SUM(CASE WHEN month = 'Jan' THEN revenue ELSE NULL END) AS Jan_Revenue,
  SUM(CASE WHEN month = 'Feb' THEN revenue ELSE NULL END) AS Feb_Revenue,
  SUM(CASE WHEN month = 'Mar' THEN revenue ELSE NULL END) AS Mar_Revenue,
  SUM(CASE WHEN month = 'Apr' THEN revenue ELSE NULL END) AS Apr_Revenue,
  SUM(CASE WHEN month = 'May' THEN revenue ELSE NULL END) AS May_Revenue,
  SUM(CASE WHEN month = 'Jun' THEN revenue ELSE NULL END) AS Jun_Revenue,
  SUM(CASE WHEN month = 'Jul' THEN revenue ELSE NULL END) AS Jul_Revenue,
  SUM(CASE WHEN month = 'Aug' THEN revenue ELSE NULL END) AS Aug_Revenue,
  SUM(CASE WHEN month = 'Sep' THEN revenue ELSE NULL END) AS Sep_Revenue,
  SUM(CASE WHEN month = 'Oct' THEN revenue ELSE NULL END) AS Oct_Revenue,
  SUM(CASE WHEN month = 'Nov' THEN revenue ELSE NULL END) AS Nov_Revenue,
  SUM(CASE WHEN month = 'Dec' THEN revenue ELSE NULL END) AS Dec_Revenue
FROM Department
GROUP BY id;