这种情况下的SQL案例

时间:2012-09-04 20:30:10

标签: sql case

是否可以在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,我就会得到负数。

1 个答案:

答案 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