SQL Query Excel – 如果找不到值,则返回“0”

我有一个简单的查询使用以下命令文本从SQL Server返回到Excel工作表的值。 但是,如果在Material_Location表中找不到“ Material值,则只是省略它。

如果在Material_Location表中找不到Material ,如何修改以下代码以将On_Hand_Qty的值返回为“0”

  SELECT SO_Detail.Sales_Order, SO_Detail.SO_Line, SO_Detail.Material, SO_Detail.Order_Qty, Material_Location.On_Hand_Qty FROM SO_Detail INNER JOIN Material_Location ON SO_Detail.Material = Material_Location.Material ORDER BY SO_Detail.Sales_Order, SO_Detail.SO_Line 

谢谢

即使没有匹配的logging存在于Material_Location使用left outer join SO_Detail而不是inner join SO_Detail也将允许您仍然从SO_Detail获取logging。

COALESCE将遍历传递给它的每个参数,直到find一个不为null的参数

 SELECT sd.Sales_Order, sd.SO_Line, sd.Material, sd.Order_Qty, COALESCE(ml.On_Hand_Qty,0) as On_Hand_Qty FROM SO_Detail sd LEFT OUTER JOIN Material_Location ml ON sd.Material = ml.Material ORDER BY sd.Sales_Order, sd.SO_Line