Я никогда не видел этого раньше ... У меня есть запрос, который начинается примерно так:
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 жалуется на это table or view does not exist
.Но выделяет ',' в строке 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
Остальная часть опущенного мной запроса довольно длинная и сложная - I 'Я проведу его дезинфекцию и опубликую, если необходимо - сейчас я просто скажу, что эта ошибка возникла только тогда, когда я добавил третий подзапрос со ссылкой q1
.На самом деле, кажется, что я могу удалить любой из 3 подзапросов, и все это будет выполнено (хотя и с неверными результатами), поэтому создается впечатление, что я столкнулся с какой-то ошибкой Oracle, а не чисто ошибкой SQL.Также интересно, что я могу запустить тело q1
как отдельный запрос, и у меня нет проблем, когда я это делаю.Только когда я запускаю весь запрос, он жалуется на запятую после случая в q1
.
Кто-нибудь когда-либо сталкивался с этим?
(используя 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 символа.Очень странно ...