SQL Server - 案例陈述

Eli*_*ias 20 sql sql-server syntax case

我几乎可以肯定你不能在case语句的上下文中做到这一点,我也找不到任何关于它的文档,但是可以做到以下几点:

SELECT CASE WHEN testValue > 2 
THEN testValue(Without Repeating it) ELSE FailValue)
END 
FROM Table 
Run Code Online (Sandbox Code Playgroud)

一个更好的更彻底的例子:

Select CASE WHEN (Foo-stuff+bar) > 2 
THEN Conditional statement without >2 Else "Fail"
END 
FROM TABLE
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种方法来创建一个选择而不重复条件查询.

编辑:由于我的一个不好的例子,我一直在寻找缺乏答案:

testValue = (Table.A / Table.B) * Table.C Table.D

SELECT CASE WHEN testValue > 2 
THEN testValue ELSE FailValue)
END 
FROM Table 
Run Code Online (Sandbox Code Playgroud)

Unh*_*ean 20

像这样

DECLARE @t INT=1

SELECT CASE
            WHEN @t>0 THEN
                CASE
                    WHEN @t=1 THEN 'one'
                    ELSE 'not one'
                END
            ELSE 'less than one'
        END
Run Code Online (Sandbox Code Playgroud)

编辑:在仔细查看问题后,我认为最好的选择是创建一个计算值的函数.这样,如果您最终有多个位置需要完成计算,那么您只需要一个点来维护逻辑.


Gid*_*dil 19

查询可以写得稍微简单,如下所示:

DECLARE @T INT = 2 

SELECT CASE 
         WHEN @T < 1 THEN 'less than one' 
         WHEN @T = 1 THEN 'one' 
         ELSE 'greater than one' 
       END T
Run Code Online (Sandbox Code Playgroud)