我以前从未见过这种情况... 我有一个查询,开始于:
with q1 as
(select a.V_ID, a.D_ID, a.C_ID,
case when a.percent > 0 THEN 'Y' ELSE 'N' end L_val,
a.C_val
from ab_a_table a
where a.C_ID = '00000003' -- '00000007' -- test values
and a.B_VAL = '6010001'
and a.Q = '11234567')
select case
when ... /* rest of query omitted */
当我尝试运行此代码时,Oracle抱怨一个“表或视图不存在”的问题。但是,它在第3行上突出显示逗号,而不是实际的表/视图名称:
case when a.percent > 0 THEN 'Y' ELSE 'N' end L_VAL, * ERROR at line 3: ORA-00942: table or view does not exist我省略了其余的查询,因为它非常长和复杂 - 如果需要,我会进行清理并发布它 - 现在我只想说,当我添加第三个引用
q1
的子查询时,才出现这个错误。 实际上,似乎我可以删除其中任何一个子查询,整个查询都将执行(尽管结果不正确),因此感觉像是我遇到了某种Oracle错误,而不是纯SQL错误。有趣的是,当我将q1
体作为独立查询运行时,它没有任何问题。只有当我运行整个查询时,它才抱怨q1
中case后面的逗号。有没有人经历过这种情况?
(使用Oracle 10g)。
编辑:尝试添加AS关键字。现在的结果如下:
case when a.perc_fault > 0 THEN 'Y' ELSE 'N' end AS L_VAL, a.C_VAL * ERROR at line 3: ORA-00942: table or view does not exist看起来星号位于相同的位置,但在
V
下面,因为单词L_VAL
已向右移动了3个字符。非常奇怪...