两个单独的案例陈述导致错误

时间:2013-12-17 13:41:05

标签: sql

在我刚开始之前

CASE obf.field_type
                WHEN 'Select One'
                        THEN obsc.label
                ELSE ocd.data
                END AS value

它有效。 现在我想添加一个案例,我正在检查ga.bases是否为null然后使用ga1.bases,如果ga.bases不为null,则使用ga.bases。所以我发表了这个声明

CASE ga.bases
        WHEN  ga.bases IS NULL THEN
            ga1.bases
        ELSE
            ga.bases
        END 

现在,当我将这两者放在一起时,它们的工作原理如下:

CASE obf.field_type
                WHEN 'Select One'
                        THEN obsc.label
                ELSE ocd.data
                END AS value

        CASE ga.bases
        WHEN  ga.bases IS NULL THEN
            ga1.bases
        ELSE
            ga.bases
        END 

我收到以下错误:

ERROR:  syntax error at or near "CASE"
LINE 12:   CASE ga.bases
           ^

********** Error **********

ERROR: syntax error at or near "CASE"
SQL state: 42601
Character: 298

我不明白为什么会出错或者我将如何解决这个问题

2 个答案:

答案 0 :(得分:2)

你错过了两个案例陈述之间的逗号。

另外,第二种情况看起来有点奇怪。你无法使用这种形式的案例测试NULL,试试这个:

CASE
  WHEN ga.bases IS NULL THEN ga1.bases
  ELSE ga.bases
END

请注意CASE之后没有值。

但更简单的是:

COALESCE(ga.bases, ga1.bases)

答案 1 :(得分:1)

我想你只需要一个逗号:

    (CASE obf.field_type
          WHEN 'Select One'
                    THEN obsc.label
          ELSE ocd.data
     END) AS value,
    (CASE ga.bases
          WHEN  ga.bases IS NULL
          THEN ga1.bases
          ELSE ga.bases
    END)