【发布时间】:2020-11-13 16:44:45
【问题描述】:
我正在使用强制转换计算视图中列的值。我想应用第一个 when 语句,然后是 else 语句,但出现错误: [错误] 执行 (370: 68): ORA-00907: 缺少右括号
如果每人只有 1 个不同的位置,我试图将 1 指定为位置序列。我想应用 else 语句中的计算来计算所有其他的。
下面是我的代码
CAST (
case
when
--addition when distinct position for person = 1 then 1
exists (select count(distinct(position)), count(*)
from REPORT_DETAILS
where REPORT_DETAILS.PERSON_ID = src.PERSON_ID
group by PERSON_ID
having count(*) =1)
Then 1
Else
(SUBSTR (position,
1,
INSTR (position, '-') - 1) =
PRIMARY_POSITION_NUMBER
AND SUBSTR (position,
INSTR (position, '-') + 1) =
PRIMARY_POSITION_NUMBER_SUFFIX
)END
AS INTEGER)
POSN_SEQUENCE,
【问题讨论】:
-
您的括号似乎是平衡的。剩下的查询是什么?另外,尝试将查询简化为仍然存在问题的最小查询(减少查询的过程是调试它并自己解决问题的好方法)。
-
我们不要盲目地修改查询的一部分,如果您提供示例数据以及您期望从该数据中得到的结果,那将会更有帮助。
标签: oracle if-statement plsql case