我收到错误ORA-00936: missing expression
,其中包含以下CASE WHEN
声明。可能是由于rownum
?我试过LIMIT 1
无效,还有TOP 1
(但这不是Oracle SQL中的东西)
基本上,下面的CASE WHEN
是在子查询返回多个值(v_date)时捕获,只选择两个重复项中的一个。
SELECT DISTINCT
g.v_type AS Type,
g.f_group AS Group,
g.v_no AS Number,
g.v_date AS Date,
g.a_year AS Year,
CASE WHEN COUNT(SELECT DISTINCT v_date
FROM glv
WHERE v_type_reference = g.v_type AND v_no_reference = g.v_no AND g.com = com) = '1'
THEN (SELECT DISTINCT v_date
FROM glv
WHERE v_type_reference = g.v_type AND v_no_reference = g.v_no AND g.com = com)
ELSE (SELECT v_date
FROM glv
WHERE v_type_reference = g.v_type AND v_no_reference = g.v_no AND g.com = com AND rownum = 1)
END AS LLD
FROM glv g
WHERE g.a_year = '2015'
答案 0 :(得分:2)
你的计数和选择条款混在一起;这样:
CASE WHEN COUNT(SELECT DISTINCT v_date
应该是
CASE WHEN (SELECT COUNT(DISTINCT v_date)
你的一些别名是保留字,但我认为你已经更改了那些用于发布的字样,因为你会得到一个ORA-00923以及问题中的确切内容。
顺便说一句,如果您的a_year
字段是一个数字,那么'2015'
不应该在引号中;同样在你的计数比较中,'1
'应该只是一个数字,而不是一个字符串。