Вложенный регистр в Oracle - PullRequest
       3

Вложенный регистр в Oracle

0 голосов
/ 08 января 2020

Я смотрю на это последние пару часов и не вижу, где я отбрасываю этот запрос, код был анонимным, поэтому простите идентификаторы замены:

select count (distinct(case when status not in ('Larry','Curly','Moe','Shemp')
                       then case when(case when 
                       (MIN(case when status in ('Larry','Curly','Moe','Shemp')
                            then case when to_char(my_date,'YYYY') = 1900
                            then my_dttm
                            else my_dttm
                            end
                            end) <= '18-nov-2019')
            and
                       (MIN(case when status in ('Larry','Curly','Moe','Shemp')
                            then case when to_char(my_date,'YYYY') = 1900
                            then my_dttm
                            else my_dttm
                            end
                            end) >= '1-oct-2019')
            then
                        MIN(case when status in ('Larry','Curly','Moe','Shemp')
                            then case when to_char(my_date,'YYYY') = 1900
                            then my_dttm
                            else my_dttm
                            end
                            end)end) is null
           then case when to_date >= '1-oct-2019' and from_date <= '18-nov-2019' then c_id end
)) from my_table; -- error code references this line

Код ошибки, который я получаю: ORA-00905: отсутствует ключевое слово 00905. 00000 - «отсутствует ключевое слово». Я искал на этом сайте что-то похожее, но я не смог найти ничего, что соответствовало бы моей конкретной ситуации c. Помощь будет принята с благодарностью. Спасибо

Ответы [ 2 ]

1 голос
/ 08 января 2020

Вам не хватает двух END ключевых слов в строке ошибки.

См. Следующее:

SELECT
    COUNT(DISTINCT(CASE
        WHEN STATUS NOT IN(
            'Larry', 'Curly', 'Moe', 'Shemp'
        ) THEN CASE
            WHEN(CASE
                WHEN(MIN(CASE
                    WHEN STATUS IN(
                        'Larry', 'Curly', 'Moe', 'Shemp'
                    ) THEN CASE
                        WHEN TO_CHAR(MY_DATE, 'YYYY') = 1900 THEN MY_DTTM
                        ELSE MY_DTTM
                    END
                END) <= '18-nov-2019')
                    AND(MIN(CASE
                    WHEN STATUS IN(
                        'Larry', 'Curly', 'Moe', 'Shemp'
                    ) THEN CASE
                        WHEN TO_CHAR(MY_DATE, 'YYYY') = 1900 THEN MY_DTTM
                        ELSE MY_DTTM
                    END
                END) >= '1-oct-2019') THEN MIN(CASE
                    WHEN STATUS IN(
                        'Larry', 'Curly', 'Moe', 'Shemp'
                    ) THEN CASE
                        WHEN TO_CHAR(MY_DATE, 'YYYY') = 1900 THEN MY_DTTM
                        ELSE MY_DTTM
                    END
                END)
            END) IS NULL THEN CASE
                WHEN TO_DATE >= '1-oct-2019'
                     AND FROM_DATE <= '18-nov-2019' THEN C_ID
            END -- this is missing in your code
        END -- this is missing in your code
    END))
FROM
    MY_TABLE;

Cheers !!

0 голосов
/ 08 января 2020

После двух операторов case не было «end»

select count (distinct(case when status not in ('Larry','Curly','Moe','Shemp') then case when(case when (MIN(case when status in ('Larry','Curly','Moe','Shemp') then case when to_char(my_date,'YYYY') = 1900 then my_dttm else my_dttm end end) <= '18-nov-2019') and (MIN(case when status in ('Larry','Curly','Moe','Shemp') then case when to_char(my_date,'YYYY') = 1900 then my_dttm else my_dttm end end) >= '1-oct-2019') then MIN(case when status in ('Larry','Curly','Moe','Shemp') then case when to_char(my_date,'YYYY') = 1900 then my_dttm else my_dttm end end)end) is null then case when to_date >= '1-oct-2019' and from_date <= '18-nov-2019' then c_id end end end )) from my_table;

case when status not in ('Larry','Curly','Moe','Shemp')
then case when(case when 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...