SQL-запрос не возвращает нули в группе по / агрегату? - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть SQL-запрос, который возвращает сумму товара в день на магазин. Он пропускает магазины / имена, которые не возвращают никаких значений.

В настоящее время вывод:

day     location sku totalSold
1/1/18     1      1      2
1/2/18     2      2      1
1/4/18     1      4      3

Я хочу, чтобы вывод был больше похож на:

day     location sku totalSold
1/1/18     1      1      2
1/1/18     1      2      0
1/1/18     1      3      0
1/1/18     1      4      3
1/1/18     2      1      2
1/1/18     2      2      0
1/1/18     2      3      0
1/1/18     2      4      0
1/2/18     1      1      2
1/2/18     1      2      0
1/2/18     1      3      0

Это мой текущий SQL-запрос:

SELECT tb1.timestamp, tb1.store, tbl2.sku, SUM(CAST(tbl2.quantity as integer)) as 'totalSold'
FROM tb1
LEFT JOIN tbl2 on tbl1.id = tbl2.id
WHERE tbl2.sku IN (select sku from tbl3) --tbl3 is a view w/ list of skunames
GROUP BY tbl1.Timestamp, YEAR(timestamp), MONTH(timestamp), DAY(timestamp), tbl1.store, tbl2.sku

1 Ответ

0 голосов
/ 07 ноября 2018

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

SELECT tb1.timestamp, tb1.store, tbl2.sku, SUM(CAST(tbl2.quantity as integer)) as 'totalSold'
FROM tb1
LEFT JOIN tbl2 on tbl1.id = tbl2.id AND tbl2.sku IN (select sku from tbl3) --tbl3 is a view w/ list of skunames
GROUP BY tbl1.Timestamp, YEAR(timestamp), MONTH(timestamp), DAY(timestamp), tbl1.store, tbl2.sku

Исходный запрос заставлял LEFT JOIN обрабатываться как INNER JOIN, потому что только условия, возвращаемые объединением, могли оцениваться для условий условия WHERE. Перемещая секцию, начинающуюся с tbl2.sku, в LEFT JOIN, условия, ранее указанные в предложении WHERE, оцениваются в таблице перед оценкой соединения (это может быть технически неверно, но это так, как нам кажется).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...