2014-11-04 60 views
0

在下面的查询中,我选择当前库存的产品。现在如果库存为null,我想替换为0。请帮我做这件事。如果在sql服务器中的值为0,则为0

SELECT p.ProductID, 
     p.ProductName, 
     (SELECT ISNULL(CurrentStock,0.00) 
     FROM Productstatus PS 
     WHERE PS.ProductID =p.ProductID 
       AND PS.LocationID = 1 
       AND PS.StatusDateTime= '2014-08-27' 
       and PS.productid=p.productid) CurrentStock 
FROM Product P 
LEFT OUTER JOIN LocationProductMap LMP ON LMP.ProductID=P.ProductID 
WHERE LMP.ProductInFlow=1 

回答

2
SELECT p.ProductID, 
    p.ProductName, 
    ISNULL((SELECT ISNULL(CurrentStock,0.00) 
    FROM Productstatus PS 
    WHERE PS.ProductID =p.ProductID 
      AND PS.LocationID = 1 
      AND PS.StatusDateTime= '2014-08-27' 
      and PS.productid=p.productid),0) CurrentStock 
FROM Product P 
LEFT OUTER JOIN LocationProductMap LMP ON LMP.ProductID=P.ProductID 
WHERE LMP.ProductInFlow=1 
0

可以使用

Select case when (CurrentStock) is null then 0 else (CurrentStock) end from table 
0

单COALESCE将做的工作在你的查询。它比ISNULL功能更有效。

SELECT p.ProductID, 
    p.ProductName, 
    COALESCE((SELECT CurrentStock 
    FROM Productstatus PS 
    WHERE PS.ProductID =p.ProductID 
      AND PS.LocationID = 1 
      AND PS.StatusDateTime= '2014-08-27' 
      and PS.productid=p.productid),0) CurrentStock 
FROM Product P 
LEFT OUTER JOIN LocationProductMap LMP ON LMP.ProductID=P.ProductID 
WHERE LMP.ProductInFlow=1 
相关问题