在我刚开始之前
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
我不明白为什么会出错或者我将如何解决这个问题
答案 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)