Postgres - конвертировать нулевой столбец результата в ноль в кросс-таблице - PullRequest
0 голосов
/ 14 мая 2018

У меня есть перекрестный запрос, который работает нормально. Он основан на клиентах и ​​их общих транзакциях, разделенных по месяцам года.

Единственная проблема заключается в том, что когда нет данных для столбца (т.е. нет активности за месяц), тогда я получаю нулевое значение, которое я хотел бы преобразовать в ноль.

Я попытался объединиться в поле «количество», но это не работает.

Если у кого-нибудь есть подсказки, чтобы помочь, я был бы очень признателен.

Запрос:

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);

1 Ответ

0 голосов
/ 14 мая 2018

Вместо select * используйте select coalesce("Jan 2018", 0) as "Jan 2018", ...

...