SELECT
name,
type,
(case when to_char(expiresdate)>to_char(now())
then active
else
expired end
) as 'membership status',
expiresdate
FROM
membership
我在这个sql上遇到了语法错误,但我无法弄清楚我做错了什么
答案 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