У меня есть большие 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
Есть ли способ достичь этого?