Функция обращения в ORACLE SQL

#sql #oracle #case

#sql #Oracle #case

Вопрос:

У меня есть основной вопрос: когда вы используете CASE с несколькими значениями, я могу использовать ИЛИ, но мне всегда приходится повторять имя столбца = или есть более простое решение, см. Пример ниже с номерами телефонов. Спасибо за ваши советы.

  -- Channel Dial
   CASE
    WHEN FIS.TARGET_ADDRESS = ' 3222011111' OR FIS.TARGET_ADDRESS   = ' 3222018181'  THEN 'BCC'


    WHEN FIS.TARGET_ADDRESS  = ' 3222012345' THEN 'MAIN'
    
    WHEN  FIS.TARGET_ADDRESS  = '3222785120' OR  FIS.TARGET_ADDRESS   =  ' 3222785121' THEN 'Eshipper'

    ELSE 'OTHER'
  END AS "CHANNEL_DIAL",
 

Ответ №1:

Ваше CASE..WHEN выражение можно упростить, используя DECODE следующее:

 DECODE(FIS.TARGET_ADDRESS,
      ' 3222011111','BCC',
      ' 3222018181','BCC',
      ' 3222012345','MAIN',
      ' 3222785120','Eshipper',
      ' 3222785121','Eshipper',
      'OTHER')
 

Ответ №2:

Вы можете использовать IN ключевое слово:

 WHEN  FIS.TARGET_ADDRESS IN ('3222785120', ' 3222785121') THEN