У меня есть перекрестный запрос, который работает нормально. Он основан на клиентах и их общих транзакциях, разделенных по месяцам года.
Единственная проблема заключается в том, что когда нет данных для столбца (т.е. нет активности за месяц), тогда я получаю нулевое значение, которое я хотел бы преобразовать в ноль.
Я попытался объединиться в поле «количество», но это не работает.
Если у кого-нибудь есть подсказки, чтобы помочь, я был бы очень признателен.
Запрос:
select *
from crosstab(
$ct$
SELECT sa.id,
company.name,
to_char(sat.transaction_date, 'YYYY-MM') AS my,
COALESCE(sat.amount,0) AS amnt
FROM sales_account_transactions sat
JOIN sales_account sa ON sa.id = sat.sales_account
JOIN company ON sa.company = company.id
WhERE sat.financial_company = 1
AND sat.transaction_date BETWEEN '2018-01-01' AND '2018-03-31'
AND sat.reversed_by = 0
AND sat.original_id = 0
GROUP BY sa.id, company.name, my, amnt
ORDER BY company.name, to_char(sat.transaction_date, 'YYYY-MM');
$ct$,
$$VALUES
('2018-01'), ('2018-02'), ('2018-03')
$$
)
as ct(id int, name text,
"Jan 2018" int, "Feb 2018" int, "Mar 2018" int);