SQL SELECT в зависимости от значения - PullRequest
0 голосов
/ 27 апреля 2018

Мне нужен совет или идея, как решить мою проблему. Я выбрал на основе нескольких соединений. Одним из выбранных значений является ex. CA.PADDING_ZERO_FLAG, который равен '0' или '1'.

Исходя из этого, я хочу получить другие значения в операторе выбора.

псевдокод:

Select if(CA.PADDING_ZERO_FLAG = '1') then LPAD(ZR.START_ZIP_CODE, 5, '0'),
    LPAD(ZR.END_ZIP_CODE, 5, '0') else ZR.START_ZIP_CODE, ZR.END_ZIP_CODE

Можно ли это сделать?

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

Оператор Case будет работать для этого.

SELECT
  CASE
     WHEN CA.PADDING_ZERO_FLAG = '1' 
         THEN 
             LPAD(ZR.START_ZIP_CODE, 5, '0')
         ELSE 
             ZR.START_ZIP_CODE
  END as 'START_ZIP_CODE',
  CASE
     WHEN CA.PADDING_ZERO_FLAG = '1' 
         THEN 
             LPAD(ZR.END_ZIP_CODE, 5,'0')
         ELSE 
             ZR.END_ZIP_CODE
  END as 'END_ZIP_CODE'
0 голосов
/ 27 апреля 2018

Вы можете использовать функцию декодирования

select 
  decode(CA.PADDING_ZERO_FLAG,
      '1', LPAD(ZR.START_ZIP_CODE, 5, '0'),
      '0', ZR.START_ZIP_CODE) START_ZIP_CODE,
  decode(CA.PADDING_ZERO_FLAG,
      '1', LPAD(ZR.END_ZIP_CODE, 5, '0'),
      '0', ZR.END_ZIP_CODE) END_ZIP_CODE
      ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...