Следующий запрос возвращает количество транзакций в месяц. Я хочу, чтобы запрос возвращал 0 в том месяце, когда в таблице TV_TRANSACTION не было транзакций (нет записей).
WITH
msc (num) AS
(VALUES (TIMESTAMP('2019-10-01 00:00:00.001'))
UNION ALL
SELECT num + 1 MONTH
FROM msc
WHERE num < current timestamp - 1 MONTH
)
SELECT SUBSTR(CHAR(num),1,7),
count(case when t.STATUS = 44 and t.TRANSACTION_TYPE = 0 then 1 else 0 end) FROM TV_TRANSACTION t
join TB_INSTALLATION i on t.INSTALLATION_ID = i.INSTALLATION_ID
right join msc mc on SUBSTR(CHAR(t.REGISTRATION_DATE),1,7) = SUBSTR(CHAR(mc.num),1,7)
where i.IB24_VERSION = 2
and date(t.REGISTRATION_DATE) >= '2019-10-01'
and t.STATUS = 44
and t.TRANSACTION_TYPE = 0
and SUBSTR(CHAR(t.REGISTRATION_DATE),1,7) >= SUBSTR(CHAR(i.IB24_VERSION_UPDATE_DATE),1,7)
group by SUBSTR(CHAR(mc.num),1,7)
На данный момент запрос возвращает результат
2020-02 | 1552
2020-03 | 6981
2020-04 | 16439
2020-05 | 5
Как изменить запрос, чтобы получить что-то вроде этого?:
2019-10 | 0
2019-11 | 0
2019-12 | 0
2020-01 | 0
2020-02 | 1552
2020-03 | 6981
2020-04 | 16439
2020-05 | 5