SQL - оператор If внутри DateAdd
Я чрезвычайно новичок в SQL, но действительно наслаждаюсь им и хочу стать лучше.
В моем коде я беру 3 таблицы и объединяю их вместе, а затем создаю несколько столбцов для этого слияния. Я создал столбец "DaysOfStock" и хочу добавить номер в каждом столбце к текущей дате. Проблема в том, что "DaysOfStock" является функцией "если", и я не уверен, как добавить ее в функцию "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-
1 ответ
Решение
Ну, тривиально, просто повторяя один и тот же код:
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)