2014-11-04 2 views
0

아래 쿼리에서 현재 재고가있는 제품을 선택합니다. 현재 재고가 null 인 경우 0을 대체하려고합니다.이 작업을 수행하는 데 도움이됩니다.값이 SQL 서버에서 null 인 경우 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

단일 유착을 사용할 수 있습니다. 또한 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 
관련 문제