Есть ли способы сделать что-то вроде «случай, когда значение в таблице» в AS400 DB2 SQL? - PullRequest
0 голосов
/ 12 марта 2020

В поисках способа сделать что-то вроде

with T(A) as (values (1), (2), (439), (438), (13000023) ),
    TT(B) as (values (2), (438))
select
    A,
    (CASE 
        WHEN (A IN (select B from tt) ) THEN 0
        ELSE A 
        END) AS CODE 
    from T

(Для информации выше, не работает, и я получаю ошибку: [SQL0115] Операция сравнения IN неверна. SQLState: 42601 ErrorCode: -115

Любые предложения приветствуются. Спасибо

Ответы [ 2 ]

2 голосов
/ 12 марта 2020

Я думаю, что левое соединение поможет вам здесь:

with T(A) as (values (1), (2), (439), (438), (13000023) ),
    TT(B) as (values (2), (438))
select case
       when B is NULL then A
       else 0
       end
from T
left join TT
    on A = B;

Обратите внимание, что вам, возможно, придется изменить это, если ключи не уникальны.

0 голосов
/ 12 марта 2020

Это должно работать:

select A,
      (CASE WHEN A IN (select B from tt) THEN 0
            ELSE A 
        END) AS CODE 
from T

Псевдоним не подходит после IN.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...