Синтаксическая ошибка "Отсутствует ключевое слово" в операторе case в предложении WHERE - PullRequest
0 голосов
/ 29 мая 2019

У меня есть некоторая синтаксическая ошибка в моем заявлении case, где я проверяю условие ниже:

((RAP10B.CLMSRC = '2', RAP01.EFFDT - 3 years <= RAP10.LOSSDT < RAP01.EFFDT) 
       OR 
(RAP10B.CLMSRC <> '2', RAP01.EFFDT - 3 years <= RAP10.LOSSDT < RAP01.EFFDT - 60 days)

Ниже приведен код, который я использую.

CASE
  WHEN RAP10B.CLMSRC = '2'
  THEN rap10.lossdt_t BETWEEN Add_months(rap01.teffdt_t, - 36) AND rap01.teffdt_t
  WHEN RAP10B.CLMSRC <> '2'
  THEN rap10.lossdt_t BETWEEN Add_months(rap01.teffdt_t, - 36) AND (rap01.teffdt_t - 60)
END 

Сообщение об ошибкеэто "ORA-00905: отсутствует ключевое слово".Но я не могу найти пропавшую вещь.

Ответы [ 3 ]

1 голос
/ 29 мая 2019

Обычно гораздо лучше использовать конструкции AND / OR в предложении WHERE вместо case выражений :

WHERE (RAP10B.CLMSRC = '2'
       AND rap10.lossdt_t BETWEEN Add_months(rap01.teffdt_t, - 36) AND rap01.teffdt_t)
   OR (RAP10B.CLMSRC <> '2'
       AND rap10.lossdt_t BETWEEN Add_months(rap01.teffdt_t, - 36) AND (rap01.teffdt_t - 60))
0 голосов
/ 29 мая 2019

Попробуйте ниже -

CASE
  WHEN RAP10B.CLMSRC = '2'
  and rap10.lossdt_t BETWEEN Add_months(rap01.teffdt_t, - 36) AND rap01.teffdt_t then yourval
  WHEN RAP10B.CLMSRC <> '2'
  and rap10.lossdt_t BETWEEN Add_months(rap01.teffdt_t, - 36) AND (rap01.teffdt_t - 60) yourval1
END 
0 голосов
/ 29 мая 2019

Вы ищете что-то подобное?

CASE
   WHEN RAP10B.CLMSRC = '2'
      AND rap10.lossdt_t BETWEEN Add_months(rap01.teffdt_t, - 36) 
      AND rap01.teffdt_t THEN <your_column>
   WHEN RAP10B.CLMSRC <> '2'
      AND rap10.lossdt_t BETWEEN Add_months(rap01.teffdt_t, - 36) 
      AND (rap01.teffdt_t - 60) THEN <your_column>
END 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...