对SQL不熟悉我的查询有问题,我确信它有一个简单的解决方案。我正在尝试在特定时间段内生成项目销售报告,如果没有销售,我需要显示0或空单元格。相反,我根本没有显示项目。 目前的查询是:
SELECT stock.stock_item_code, stock.physical_quantity, sales.quantity
FROM stock_branch_level AS stock LEFT OUTER JOIN
booked_sales AS sales ON stock.stock_item_code = sales.stock_item_code
WHERE (stock.replen_type = 1) AND (sales.created_date > @DateFrom)
由于
答案 0 :(得分:3)
LEFT OUTER JOIN
也是获取行的正确方法。
问题在于sales
上的where子句。
请注意,当没有销售时,该行中的所有销售列都将为空!
解决方案是将sales.created_date的限制移至join子句:
SELECT stock.stock_item_code, stock.physical_quantity, sales.quantity
FROM stock_branch_level AS stock LEFT OUTER JOIN
booked_sales AS sales ON stock.stock_item_code = sales.stock_item_code
AND sales.created_date > @DateFrom
WHERE (stock.replen_type = 1)