Я пытаюсь использовать выражение CASE с SELECT с разработчиком Oracle SQL, и что бы я ни делал, я получаю ошибку. В приведенном ниже заявлении у меня отсутствует выражение. Я проверил и думаю, что есть все необходимые ключевые слова. Я пробовал модифицировать код разными способами, и единственное, что иногда случается, - иногда я получаю
"missing keyword error".
SELECT
CASE WHEN A.PARENT_ID IS NULL THEN 'NOPROB'
ELSE 'PROB'
END AS 'PROBLEMS'
FROM A
Удалите апостроф вокруг ПРОБЛЕМ или замените его кавычками.
Нет, я его поменял, потому что он назван в честь человека!
Одиночные кавычки предназначены для строковых литералов. Используйте двойные кавычки для идентификаторов с разделителями.
@jarlh Затем я получаю недопустимый идентификатор (ORA-00904: недопустимый идентификатор)
@WilliamRobertson Да, этот и еще несколько, не говоря уже об от
Я попробовал выполнить запрос, как указано выше, и получил только ORA-00923, больше ничего.
Одиночные кавычки предназначены для символьных значений, а не для идентификаторов.


Попробуйте этот ответ
SELECT
CASE WHEN PARENT_ID IS NULL THEN 'NOPROB'
ELSE 'PROB'
END AS PROBLEMS
FROM A
Элементы списка select не нужно заключать в квадратные скобки.
Спасибо, я попробовал, но это не помогает ... ORA-00904: недопустимый идентификатор - 00904. 00000 - «% s: недопустимый идентификатор»
Итак, есть ли столбец PARENT_ID в таблице A? Мы знаем только то, что вы нам рассказываете (а теперь выясняется, что это было не совсем так).
При присвоении псевдонима имени таблицы используются двойные кавычки, а не одиночные кавычки
SELECT
CASE WHEN A.PARENT_ID IS NULL THEN 'NOPROB'
ELSE 'PROB'
END AS "PROBLEMS"
FROM A
Только если идентификатор, который вы хотите использовать, является зарезервированным словом или нестандартным иным образом. Поскольку обычно использовать зарезервированные слова или нестандартные имена идентификаторов - плохая идея, лучше избегать использования двойных кавычек.
Имя таблицы A?