代码之家  ›  专栏  ›  技术社区  ›  vancouver3

SQL查询Excel-如果未找到值,则返回“0”

  •  1
  • vancouver3  · 技术社区  · 7 年前

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

    如何修改以下代码以返回 On_Hand_Qty 如果 布料 在中找不到 材料位置 桌子

        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
    

    谢谢

    1 回复  |  直到 7 年前
        1
  •  2
  •   Pரதீப்    7 年前

    使用 left outer join 而不是 inner join 将允许您仍然从 SO_Detail Material_Location .

    COALESCE 将遍历传递给它的每个参数,直到找到一个非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