是否可以在SQL CASE子句中使用和语句?如果是这样你怎么写呢?
即是这样的事情?:
CASE
When ((Column < 1) AND (Column2 > 0)) THEN column4 + 1
END as Column
我的代码执行但没有完成我想要的(没有负数):
CASE
WHEN (((Clean_Total_Time - ActivityTimeTotalMin) < 0) AND (ActivityTimeTotalMin > 0))
THEN (ABS(DATEDIFF(hh,Total_Time,ActivityTotalTime))-1)
END as hours
我的代码确实有效并且确实完成了应有的但我不想要它,因为它允许负数:
CASE
WHEN (Clean_Total_Time - ActivityTimeTotalMin) < 0
THEN (ABS(DATEDIFF(hh,Total_Time,ActivityTotalTime))-1)
END as hours
编辑:此计算的目的如下:
它减去两列,如果结果为负,则从这两列中的一列减去第一列。此外,我的AND部分是说如果该列的值为零,那么它不会从列中减去1。我不希望该列的数字低于零。
唯一没有发生的事情是,如果列等于零,则不会捕获。因此,只要最初为0,我就会得到负数。
答案 0 :(得分:2)
根据这个MSDN article,它是:
SELECT ProductNumber, Name, "Price Range" = CASE ... WHEN ListPrice >= 50 and ListPrice < 250 THEN 'Under $250' WHEN ListPrice >= 250 and ListPrice < 1000 THEN 'Under $1000' ELSE 'Over $1000' END FROM Production.Product
我认为你不需要括号。
更新1
您可以尝试在CASE
内使用CASE
,如下所示:
CASE
WHEN Column < 1
CASE
WHEN Column2 > 0 THEN column4 + 1
END
END AS Column