2017-02-21 49 views
0

我對SQL非常陌生,但真的很享受它,並希望在它變得更好。SQL - 如果語句裏面有DateAdd

在我的代碼中,我將3個表合併在一起,然後爲該合併創建幾個列。我創建了一個「DaysOfStock」列,並希望將每列中的數字添加到當前日期。問題是「DaysOfStock」是一個「if」函數,我不確定如何將它添加到「DayAdd」函數中。我的代碼部分我有麻煩w /下面。

SELECT Cust.Article, 
    IsNull(stock.StockQuantity,0) StockQuantity, 
    IsNull(orders.OpenQty,0) OpenOrders, 
    IsNull(usage.[3MonUsage], 0) [3MonUsage], IsNull(usage.EAU, 0) [EAU], 
    ROUND(IsNull(usage.EAU, 0)/366,0) DailyUsage, 
    CASE WHEN IsNull(usage.EAU, 0)/366 = 0 THEN ROUND(IsNull(stock.StockQuantity,0)/(IsNull(orders.OpenQty, 0)/366),2) 
    ELSE ROUND(IsNull(stock.StockQuantity,0)/(IsNull(usage.EAU, 0)/366),2) END AS DaysOfStock 
    DateAdd(day, **DaysOfStock**, GetDate()) 
FROM TeslaArts 
     LEFT OUTER JOIN usage ON CustArts.Article = usage.Article 
     LEFT OUTER JOIN stock ON CustArts.Article = stock.Article 
     LEFT OUTER JOIN orders ON CustArts.Article = orders.Article 
WHERE (orders.OpenQty > 0 AND usage.[3MonUsage] > 0) 
    OR (orders.OpenQty = 0 AND usage.[3MonUsage] > 0) 
    OR (orders.OpenQty > 0 AND usage.[3MonUsage] = 0) 

請讓我知道,如果有什麼不清楚。 感謝您的幫助提前。 -Alex

回答

0

好,平凡,只是重複同樣的代碼:

SELECT Cust.Article, 
    IsNull(stock.StockQuantity,0) StockQuantity, 
    IsNull(orders.OpenQty,0) OpenOrders, 
    IsNull(usage.[3MonUsage], 0) [3MonUsage], IsNull(usage.EAU, 0) [EAU], 
    ROUND(IsNull(usage.EAU, 0)/366,0) DailyUsage, 
    CASE WHEN IsNull(usage.EAU, 0)/366 = 0 THEN ROUND(IsNull(stock.StockQuantity,0)/(IsNull(orders.OpenQty, 0)/366),2) 
    ELSE ROUND(IsNull(stock.StockQuantity,0)/(IsNull(usage.EAU, 0)/366),2) END AS DaysOfStock, 
    DateAdd(day, 
      CASE WHEN IsNull(usage.EAU, 0)/366 = 0 THEN 
       ROUND(IsNull(stock.StockQuantity,0)/(IsNull(orders.OpenQty, 0)/366),2) 
      ELSE 
       ROUND(IsNull(stock.StockQuantity,0)/(IsNull(usage.EAU, 0)/366),2) 
      END, 
      GetDate()) AS ProjectedDate 
FROM TeslaArts 
     LEFT OUTER JOIN usage ON CustArts.Article = usage.Article 
     LEFT OUTER JOIN stock ON CustArts.Article = stock.Article 
     LEFT OUTER JOIN orders ON CustArts.Article = orders.Article 
WHERE (orders.OpenQty > 0 AND usage.[3MonUsage] > 0) 
    OR (orders.OpenQty = 0 AND usage.[3MonUsage] > 0) 
    OR (orders.OpenQty > 0 AND usage.[3MonUsage] = 0)