Поворот результатов от CTE в Postgres - PullRequest
1 голос
/ 24 марта 2020

У меня есть большие SQL операторы (PostgreSQL версия 11) со многими CTE, я хочу использовать результаты из промежуточного CTE, чтобы создать PIVOTed набор результатов и объединить его с другим CTE.

Ниже приведена небольшая часть моего запроса, и CTE "previous_months_actual_sales" - это то, что мне нужно для PIVOT.

,last_24 as
(
    SELECT l_24m::DATE + (interval '1' month * generate_series(0,24)) as last_24m
 FROM last_24_month_start LIMIT 24
)
,previous_months_actual_sales as
(
    SELECT TO_CHAR(created_at,'YYYY-MM') as dates
    ,b.code,SUM(quantity) as qty  
FROM base b
INNER JOIN products_sold  ps ON ps.code=b.code 
WHERE TO_CHAR(created_at,'YYYY-MM')
IN(SELECT TO_CHAR(last_24m,'YYYY-MM') FROM last_24)
GROUP BY b.code,TO_CHAR(created_at,'YYYY-MM')
)
SELECT * FROM previous_months_actual_sales

Результаты этого CTE "previous_months_actual_sales" показаны ниже,

dates       code        qty
"2018-04"   "0009"      23
"2018-05"   "0009"      77
"2018-06"   "0008"      44
"2018-07"   "0008"      1
"2018-08"   "0009"      89

Ожидаемый результат на основе вышеуказанного результата:

code.     2018-04.    2018-05.     2018-06.    2018-07.   2018-08
"0009".     23         77                                   89
"0008".                               44          1

Есть ли способ достичь этого?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...