У меня есть таблица B
, которая выглядит следующим образом:
DATE | STORE | PRODUCT | UNITS_SOLD |
-------------------------------------------
2020-01-01 | 1 | Beans | 10 |
2020-01-03 | 1 | Beans | 5 |
2020-01-01 | 2 | Carrots | 6 |
... | ... | ... | ... |
Важным моментом является то, что для каждой даты нет строки.
Я бы хотел по сути, «заполните» отсутствующие даты и оставьте нулевые значения в других столбцах. Я пытался сделать это, оставив соединение с таблицей A
, которая представляет собой просто список непрерывных календарных дат, т.е.
DATE |
------------
2019-01-01 |
2019-01-02 |
2019-01-03 |
...
SQL, который я написал для этого (и я попытался упростить, ограничившись одним магазином и одним продуктом):
SELECT
A.DATE
, B.STORE
, B.PRODUCT
, B.UNITS_SOLD
FROM
B AS SALES
LEFT JOIN
A AS DATES ON
DATES.DATE = SALES.DATE
WHERE
B.STORE = 1
AND B.PRODUCT = 'Beans'
Но он просто возвращает строки, где дата присутствует в B
. Я попытался переместить условия в предложении WHERE внутрь соединения и добавить '...OR IS NULL'.
Я бы хотел:
DATE | STORE | PRODUCT | UNITS_SOLD |
-------------------------------------------
2020-01-01 | 1 | Beans | 10 |
2020-01-02 | null | null | null |
2020-01-03 | 1 | Beans | 5 |
... | ... | ... | ... |
Что мне не хватает?