在SQL case语句中出现语法错误

时间:2017-10-13 14:43:33

标签: sql

SELECT 
  name,
  type,
  (case when to_char(expiresdate)>to_char(now()) 
      then active 
   else 
      expired end
  ) as 'membership status', 
  expiresdate    
FROM 
  membership

我在这个sql上遇到了语法错误,但我无法弄清楚我做错了什么

2 个答案:

答案 0 :(得分:0)

我最好的猜测是使用单引号作为表达式别名。试试"membership status"[membership status]

(case when to_char(expiresdate)>(now()) 
then active 
else expired end) 
as [membership status]

(为了更清晰,分成若干行)

解释:单引号使'membership status'成为字符串文字。这不能用作别名。别名可以是单个单词(以字母开头),双引号中的一系列单词,或方括号中的一系列单词。

所有这些都可行:

... as membershipstatus
... as [membership status]
... as "membership status"

这可能不是您的SQL语句的唯一问题 - 其他人已经指出您使用日期和字符串做了奇怪的事情 - 但我相信这就是您特意得到语法错误的原因,这是你问的。

答案 1 :(得分:0)

试试这个:

SELECT 
name,
type,
case when to_char(expiresdate)>(now()) 
then active else 
expired end as 'membership status', 
expiresdate    
FROM membership