[英]missing expression sql
SELECT
create_date
,resolved_date
,item
,site
,status
,contact_time
,impact_label
FROM
mytable
WHERE
create_date BETWEEN to_date('2013/03/01','YYYY/MM/DD')
AND to_date('2015/08/06','YYYY/MM/DD')
and CASE item
WHEN in ('A','B') then '1'
WHEN in ('C') then '2'
WHEN in ('D') then '3'
ELSE null
END
GROUP BY
create_date
,resolved_date
,item
,site
,status
,contact_time
,impact_label
它说我第一次进屋时遇到问题,有人可以帮忙吗?
如果要在CASE
使用IN
,则需要不同的语法:
...
case
when item in ('A','B') then '1'
when item in ('C') then '2'
when item in ('D') then '3'
--else null -- no need , ELSE NULL is default behaviour of CASE
end ...
或更改CASE
来更正简单的搜索语法:
CASE item
WHEN 'A' THEN '1'
WHEN 'B' THEN '1'
WHEN 'C' THEN '2'
WHEN 'D' THEN '3'
ELSE NULL
END
CASE
是一个返回值的表达式。 在您的情况下,它将返回一个字符串值。
WHERE
子句由布尔表达式组成。 字符串不是布尔表达式。 我不确定您打算做什么,也许:
(CASE WHEN item in ('A','B') then '1'
WHEN item in ('C') then '2'
WHEN item in ('D') then '3'
ELSE null
END) IS NOT NULL
(请注意对CASE
的更改以及对IS NOT NULL
。)
但是,这是一个愚蠢的表达,因为它等效于:
item in ('A', 'B', 'C', 'D')
也许您想将CASE
添加到SELECT
,为其提供适当的列别名。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.