Заставить таблицу возвращать все строки, даже если транзакции равны нулю - PullRequest
0 голосов
/ 07 июня 2018

У меня есть таблица, которая возвращает все балансовые и совокупные суммы для каждого аккаунта, периода года / месяца и каждой компании. Пожалуйста, смотрите изображение здесь

Вот моя проблема.Есть записи в YearMonth, в которых у меня вообще нет транзакций, поэтому для этих учетных записей у меня нет записей.Но так как я показываю кумулятивные суммы, мне нужно отобразить все учетные записи во всех периодах YearMonth.

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

Может кто-нибудь предложить какой-нибудь обходной путь?Есть идеи?

Спасибо.

1 Ответ

0 голосов
/ 07 июня 2018

Жестко закодируйте список всех лет и месяцев и оставьте соединение с существующей таблицей:

with ym as(
select * from (values ('201401'), ('201402'), ('201403'), ('201404'), ('201405'), ('201406'), ('201407'), ('201408'), ('201409'), ('201410'), ('201411'), ('201412'), 
('201501'), ('201502'), ('201503'), ('201504'), ('201505'), ('201506'), ('201507'), ('201508'), ('201509'), ('201510'), ('201511'), ('201512'), 
('201601'), ('201602'), ('201603'), ('201604'), ('201605'), ('201606'), ('201607'), ('201608'), ('201609'), ('201610'), ('201611'), ('201612'), 
('201701'), ('201702'), ('201703'), ('201704'), ('201705'), ('201706'), ('201707'), ('201708'), ('201709'), ('201710'), ('201711'), ('201712'), 
('201801'), ('201802'), ('201803'), ('201804'), ('201805'), ('201806'), ('201807'), ('201808'), ('201809'), ('201810'), ('201811'), ('201812'), 
('201901'), ('201902'), ('201903'), ('201904'), ('201905'), ('201906'), ('201907'), ('201908'), ('201909'), ('201910'), ('201911'), ('201912')) a(YearMonth))
select ym.YearMonth, at.AccountNumber, mt.*
from ym
cross join [Accounts Table] at 
left join [My query of transactions with YearMonth and Accounts] mt on mt.YearMonth = ym.YearMonth and mt.AccuntNumber = mt.AccountNumber
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...