Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
DateAdd中的SQL-If语句_Sql_If Statement_Calculated Columns_Case When_Dateadd - Fatal编程技术网

DateAdd中的SQL-If语句

DateAdd中的SQL-If语句,sql,if-statement,calculated-columns,case-when,dateadd,Sql,If Statement,Calculated Columns,Case When,Dateadd,我对SQL非常陌生,但我非常喜欢它,并希望在这方面做得更好 在我的代码中,我将3个表合并在一起,然后为合并创建几列。我已经创建了一列“DaysOfStock”,并希望将每列中的数字添加到当前日期。问题是“DaysOfStock”是一个“if”函数,我不知道如何将它添加到“DayAdd”函数中。下面是我遇到问题的代码部分 SELECT Cust.Article, IsNull(stock.StockQuantity,0) StockQuantity, IsNull(orders.O

我对SQL非常陌生,但我非常喜欢它,并希望在这方面做得更好

在我的代码中,我将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

嗯,很简单,只要重复相同的代码:

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)