ORA-00936: отсутствует выражение с подзапросом CASE WHEN
Я получаю ошибку ORA-00936: missing expression
с CASE WHEN
утверждение ниже. возможно из-за rownum
? я пытался LIMIT 1
безрезультатно, а также TOP 1
(но это не вещь в Oracle SQL)
В основном, CASE WHEN
ниже нужно поймать, когда подзапрос возвращает более одного значения (v_date) и просто выбрать один из двух дубликатов.
SELECT DISTINCT
g.v_type AS Type,
g.f_group AS Group,
g.v_no AS Number,
g.v_date AS Date,
g.a_year AS Year,
CASE WHEN COUNT(SELECT DISTINCT v_date
FROM glv
WHERE v_type_reference = g.v_type AND v_no_reference = g.v_no AND g.com = com) = '1'
THEN (SELECT DISTINCT v_date
FROM glv
WHERE v_type_reference = g.v_type AND v_no_reference = g.v_no AND g.com = com)
ELSE (SELECT v_date
FROM glv
WHERE v_type_reference = g.v_type AND v_no_reference = g.v_no AND g.com = com AND rownum = 1)
END AS LLD
FROM glv g
WHERE g.a_year = '2015'
1 ответ
Решение
У вас есть счет и выберите пункты смешаны; этот:
CASE WHEN COUNT(SELECT DISTINCT v_date
должно быть
CASE WHEN (SELECT COUNT(DISTINCT v_date)
Некоторые из ваших псевдонимов являются зарезервированными словами, но я предполагаю, что вы изменили их для публикации, так как вы получите ORA-00923 с именно тем, что есть в вопросе.
В сторону, если ваш a_year
поле это число тогда '2015'
не должно быть в кавычках; Точно так же в сравнении вашего счета, '1
'должно быть просто число, а не строка.