Oracle case expression пытается использовать определения столбцов после - PullRequest
0 голосов
/ 25 мая 2018

Я работаю над веб-приложением, которое использует Oracle 12c для RDMS.

Я остановился на том, чего я пытаюсь достичь, и поэтому ищу некоторую помощь / руководство по решению моей проблемы.

У меня есть следующий оператор SQL, который выполняется, но возвращает нулевые значения:

        CASE MRI.REVIEW_NAME
        WHEN 'wk1' THEN COALESCE(A.DC_CLASSIFICATION_DATE,A.DC_TRANSFER_DATE) + 7
        WHEN 'wk2' THEN COALESCE(A.DC_CLASSIFICATION_DATE,A.DC_TRANSFER_DATE) + 14 
        WHEN 'wk3' THEN COALESCE(A.DC_CLASSIFICATION_DATE,A.DC_TRANSFER_DATE) + 21
        WHEN 'wk4' THEN COALESCE(A.DC_CLASSIFICATION_DATE,A.DC_TRANSFER_DATE) + 28
        WHEN 'wk5' THEN COALESCE(A.DC_CLASSIFICATION_DATE,A.DC_TRANSFER_DATE) + 35
        WHEN 'wk6' THEN COALESCE(A.DC_CLASSIFICATION_DATE,A.DC_TRANSFER_DATE) + 42
        WHEN 'wk7' THEN COALESCE(A.DC_CLASSIFICATION_DATE,A.DC_TRANSFER_DATE) + 49
        WHEN 'wk8' THEN COALESCE(A.DC_CLASSIFICATION_DATE,A.DC_TRANSFER_DATE) + 56
        WHEN 'wk9' THEN COALESCE(A.DC_CLASSIFICATION_DATE,A.DC_TRANSFER_DATE) + 63
        WHEN 'wk10' THEN COALESCE(A.DC_CLASSIFICATION_DATE,A.DC_TRANSFER_DATE) + 70
        WHEN 'wk11' THEN COALESCE(A.DC_CLASSIFICATION_DATE,A.DC_TRANSFER_DATE) + 77
        WHEN 'wk12' THEN COALESCE(A.DC_CLASSIFICATION_DATE,A.DC_TRANSFER_DATE) + 84
        END AS REVIEW_END_DATE,

Возможно ли это сделать, во всех найденных мной примерах используется строковое значение после THENа не колонка манипуляций?Пожалуйста, не PL / SQL-ответы, только SQL.

Хорошо, обновление, данные вызывали проблему и теперь работают как положено.Спасибо, что узнал кое-что об утверждении Oracle Case, которое, по моему мнению, было невозможно.

Любая помощь приветствуется.JC

1 Ответ

0 голосов
/ 25 мая 2018

Вот более общее выражение:

COALESCE(A.DC_CLASSIFICATION_DATE,A.DC_TRANSFER_DATE) + REGEXP_SUBSTR(MRI.REVIEW_NAME, '\d+$')*7 AS REVIEW_END_DATE

Оно короче и должно решить вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...