如何编写不选择CASE判断列的SQL CASE语句?
SQL CASE语句语法错误修复方案
错误的SQL语句
SELECT name CASE WHEN (monthlymaintenance > 100) then 'expensive' ELSE 'cheap' END cost FROM cd.facilities
报错信息
ERROR: syntax error at or near "CASE"
Position: 33Query was: SELECT name, monthlymaintenance
CASE
WHEN (monthlymaintenance > 100) then 'expensive'
ELSE 'cheap'
END cost
FROM cd.facilities
问题原因
报错核心是SELECT子句中多个字段/表达式之间缺少逗号分隔:原语句里name和CASE表达式直接相连,SQL解析器无法识别这是两个独立的选择项,因此抛出语法错误。
正确的SQL语句(不包含判断列monthlymaintenance)
SELECT name, CASE WHEN monthlymaintenance > 100 THEN 'expensive' ELSE 'cheap' END AS cost FROM cd.facilities
关键修正点
- 在
name后添加逗号,明确分隔两个选择项; - 用
AS显式指定CASE表达式的别名cost(省略AS也可运行,但显式写法可读性更强); - 条件判断中的括号
(monthlymaintenance > 100)可以省略,不影响逻辑执行。
内容的提问来源于stack exchange,提问作者swartchris8
相关产品推荐
相关产品推荐

