Удалите AS
из предложения FROM
. Oracle не распознает это.
Кроме того, это условие:
b.DISPOSITION_LINE_NUM in (NULL, 1)
Не выполняет то, что вы ожидаете. Значение b.DISPOSITION_LINE_NUM
не равно NULL
.
. Вы должны заменить его на:
(b.DISPOSITION_LINE_NUM IS NULL OR b.DISPOSITION_LINE_NUM = 1)
В противном случае ваш запрос выглядит как сбалансированные скобки, но вы должны написать это как:
SELECT e.INCIDENT_NUMBER, e.DETAILED_DESCRIPTION, e.INCIDENT_ROOT_CAUSE
FROM N_EVALUATION e JOIN
N_DISPOSITION d
ON e.INCIDENT_NUMBER = d.INCIDENT_NUMBER
WHERE (d.DISPOSITION_LINE_NUM IS NULL OR d.DISPOSITION_LINE_NUM = 1) AND
e.ACTIVE_FLAG = 'Y' AND
d.ACTIVE_FLAG = 'Y' AND
e.DETAILED_DESCRIPTION IS NOT NULL;
Примечания:
- Значимые пользователем псевдонимы таблиц, а не произвольные буквы (здесь используются сокращения).
- Не использовать
as
в FROM
предложение. - Будьте осторожны с
NULL
сравнениями.
Наконец, ваш исходный запрос эквивалентен:
SELECT e.INCIDENT_NUMBER, e.DETAILED_DESCRIPTION, e.INCIDENT_ROOT_CAUSE
FROM N_EVALUATION e JOIN
N_DISPOSITION d
ON e.INCIDENT_NUMBER = d.INCIDENT_NUMBER
WHERE d.DISPOSITION_LINE_NUM = 1 AND
e.ACTIVE_FLAG = 'Y' AND
d.ACTIVE_FLAG = 'Y' AND
e.DETAILED_DESCRIPTION IS NOT NULL;
Здесь нет скобок. Так что не может вернуть эту конкретную ошибку.