2017-02-21 9 views
0

私はSQLを初めて使っていますが、実際にそれを楽しんでいます。SQL - If Statement inside DateAdd

私のコードでは、3つのテーブルをまとめてマージし、そのマージのためのいくつかの列を作成しています。私は列 "DaysOfStock"を作成し、現在の日付に各列の番号を追加したいと思います。問題は "DaysOfStock"が "if"関数なので、 "DayAdd"関数に追加する方法がわかりません。私のコードのセクションは以下の通りです。

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)