Несколько CASE с конкатенацией - PullRequest
0 голосов
/ 14 декабря 2018

Мне нужно использовать несколько операторов CASE при объединении 2 столбцов из таблицы.

Вот сценарий, как мы можем этого достичь.

В моем выборе мы объединяем col1 +col3 из Таблицы A.

Из ТАБЛИЦЫ A,
, когда значение col2 равно NULL, и
, если значение COL3 равно 0000
, затем выбрать значение из COL1 таблицы B
ELSEесли значение COL3 НЕ РАВНОМ 0000
, выберите значение из COL2 ТАБЛИЦЫ B

Таблица A:

col1 col2 col3
aa   null 0000
bb   null 1234

Таблица b:

col1 col2  col3
LMNO PQRST

Я пробовал что-то вроде этого, которое не работает,

select
 (a.col1 || '+' || a.col3) 
 CASE WHEN (a.col2 IS NULL) THEN
    CASE WHEN (a.col3 = '0000') THEN
     (Select col1 from b)
     ELSE (a.col3 <> '0000')
     (Select col2 from b)
 ELSE
  a.col2 
 as TEST

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Это то, что вы ожидаете?

proc sql;
select 
case
    when a.col2 is null and a.col3='0000' then a.col1||b.col1
    when a.col3<>'0000' then a.col1||b.col2
end as value

from tablea a, tableb b;
quit;
0 голосов
/ 14 декабря 2018

Предполагается, что условие соединения основано на a.column_will_have_same_value = b.column_will_have_same_value

select (a.col1 || '+' || a.col3) 
,  CASE WHEN a.col2 IS NULL AND a.col3 = '0000' THEN b.col1
        WHEN a.col2 IS NULL AND a.col3 <> '0000' THEN b.col2
        WHEN a.col2 IS NOT NULL A THEN a.col2
    END  as TEST
 FROM tableA a 
 inner join tableB b on a.column_will_have_same_value  = b.column_will_have_same_value
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...