2014-11-04 2 views
0

В нижеприведенном запросе я выбираю продукт с currentstock. Теперь я хочу заменить 0, если текущее значение равно null.Pls помогите мне сделать это.Чтобы сделать 0, если значение равно null в sql-сервере

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

Single 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 
Смежные вопросы