Перекрестный запрос
Задание: Написать перекрестный запрос В качестве столбцов взять значения квартала поля ДатаОплаты, в качестве строк – значения поля НомерТелефона. На пересечении строк и столбцов отобразить соответствующие итоговые суммы оплаты, т.е. значения функции Sum от поля СуммаОплаты. Условие отбора: номера телефонов, начинающиеся на 476
Проблема: в данный момент кол-во столбцов т.е года выплаты, заданы статически, а нужно чтобы динамически все года учитывал
SELECT phone_number,
SUM (CASE date_part('year', payment_date) WHEN '2021' THEN payment_sum ELSE 0 END) AS "2021",
SUM (CASE date_part('year', payment_date) WHEN '2022' THEN payment_sum ELSE 0 END) AS "2022",
SUM (CASE date_part('year', payment_date) WHEN '2023' THEN payment_sum ELSE 0 END) AS "2023"
FROM payment
where cast(phone_number as varchar(50)) like '476'
GROUP BY phone_number
Источник: Stack Overflow на русском