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'должно быть просто число, а не строка.

Другие вопросы по тегам