DECLARE @TestVal int
SET @TestVal = 5

SELECT
    CASE
        WHEN @TestVal <=3 THEN 'Top 3'
        ELSE 'Other'
    END

我看到这个代码示例在线,但我找不到那里有没有表达一个例子,它有一个以上的情况下,所以我想知道,如果这种类型的事情是确定:

    DECLARE @TestVal int
SET @TestVal = 5

SELECT
    CASE
        WHEN @TestVal <=3 THEN 'Top 3'
                WHEN (select ...) = 1 THEN 'Other Value'
                WHEN (select ...) = 2 THEN 'Other Value 2'
        ELSE 'Other'
    END

或者我需要说的CASE时每行?

有帮助吗?

解决方案

案例采用以下形式

CASE WHEN Condition THEN Result
     WHEN Condition2 THEN Result2
ELSE Default
END

修改

这假定您使用Microsoft SQL Server等数据库管理系统可能会有所不同。

其他提示

是的,这很好,但我会排队的“当” s垂直和解释更是这样的:

SELECT
    CASE
        WHEN @TestVal <=3  THEN 'Top 3'
        WHEN @TestVal <=10 THEN 'Top 10'
        WHEN @TestVAl <=25 THEN 'Top 25'
        ELSE 'Other'
    END

在格式化可能只是一个降价毛刺,但在复杂的例子中,(select...)什么应该是一个简单的代码片段。

    SELECT
       CASE
          WHEN @TestVal <=3  THEN 'Top 3'
          WHEN @TestVal <=10 THEN 'Top 10'
          WHEN @TestVAl <=25 THEN 'Top 25'
          ELSE 'Other'
       END

在关于嵌套case语句可以做到这一点,以及(直至10条嵌套case语句允许SQL内)

http://msdn.microsoft.com/en-us/library/ ms181765.aspx

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top