SQL Case语句将两个字段组合在一起?

时间:2017-02-01 20:00:50

标签: sql sql-server-2008 case

我对CASE声明有疑问。我的案例陈述如下:

CASE myField1
        WHEN 1 THEN 'Jump'
        WHEN 2 THEN 'Sleep'
        WHEN 3 THEN 'Eat'
        WHEN 4 THEN 'Run'
        WHEN 5 THEN 'Break'
        WHEN 6 THEN 'Move'
        WHEN 7 THEN 'Stop'
        ELSE NULL END AS TestColumn,

在此声明中,我必须根据其他字段的值添加一个初始值。所以在每个WHEN选项的末尾,如果myField2等于1,可能会有一个字母A.如果没有,那么我就不会把字母A.输出应该是这样的:

Jump A
Sleep
Eat A
Run
Break
Move A
Stop

如何检查SQL CASE中的第二个字段并将现有单词的值连接起来?如果有人可以提供帮助,请告诉我。谢谢!

1 个答案:

答案 0 :(得分:3)

将它们连接在一起:

SELECT (CASE myField1
            WHEN 1 THEN 'Jump'
            WHEN 2 THEN 'Sleep'
            WHEN 3 THEN 'Eat'
            WHEN 4 THEN 'Run'
            WHEN 5 THEN 'Break'
            WHEN 6 THEN 'Move'
            WHEN 7 THEN 'Stop'
            ELSE ''
       END) + (CASE WHEN myField2 = 1 THEN 'A' ELSE '' END) AS TestColumn,

注意:我将ELSE NULL更改为ELSE ''。这允许在前一个值没有值时显示'A'。如果+的任一参数为NULL,则结果为NULL

仔细观察,你需要一个“A”之前的空格。如果在缺少现有值时您还想要“A”,请使用LTRIM()

SELECT LTRIM((CASE myField1
                WHEN 1 THEN 'Jump'
                WHEN 2 THEN 'Sleep'
                WHEN 3 THEN 'Eat'
                WHEN 4 THEN 'Run'
                WHEN 5 THEN 'Break'
                WHEN 6 THEN 'Move'
                WHEN 7 THEN 'Stop'
                ELSE ''
           END) +
          (CASE WHEN myField2 = 1 THEN ' A' ELSE '' END)
         ) AS TestColumn,