2017-02-21 23 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)