PLSQL Условные правила - PullRequest
       15

PLSQL Условные правила

0 голосов
/ 01 ноября 2018

Требуются условные правила:

IF 
A then currency = ABC
B then currency = ABD
C then currency = ABE
NULL = Returns data from A, B and C but it's currency is ABC

Пытаясь реализовать эту логику, я пытался использовать 3 отдельных оператора CASE, но, похоже, это не работает. Любая помощь оценила

Что у меня сейчас есть:

(пробовал несколько вариантов)

 CASE
             WHEN '&SITE' IS 'A' THEN
                COJ.CURRENCY_CODE IS 'ABC'
         END A,
         CASE
             WHEN '&SITE' IS 'B' THEN
                COJ.CURRENCY_CODE IS 'ABD'
         END B,
         CASE
             WHEN '&SITE' IS NULL 'C' THEN
                COJ.CURRENCY_CODE IS 'ABE'
         END C,

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Вы должны придерживаться выражения case:

(CASE WHEN '&SITE' = 'A' THEN 'ABC'
      WHEN '&SITE' = 'B' THEN 'ABD'
      WHEN '&SITE' = 'C' THEN 'ABE'
      ELSE 'ABC'
 END) as currency_code

Или:

(CASE '&SITE' WHEN 'A' THEN 'ABC'
              WHEN 'B' THEN 'ABD'
              WHEN 'C' THEN 'ABE'
              ELSE 'ABC'
 END) as currency_code

CASE - это стандартный SQL, который доступен во всех базах данных, и большинство людей считают его более понятным. DECODE() - заказный код Oracle, реализованный до того, как он пошел со стандартной функцией. CASE доступен в Oracle уже 20 лет.

0 голосов
/ 01 ноября 2018

Используйте функцию декодирования для оператора if, только B и C выдают значение, отличное от значения по умолчанию:

 decode(x, 'B', 'ABD', 'C', 'ABE','ABC')
...