有没有办法在 AS400 DB2 SQL 中做类似 "case when value in table" 的事情?
Are there ways to do something like "case when value in table" in AS400 DB2 SQL?
正在寻找一种方法来做类似
的事情
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] Opérateur de comparaison IN incorrect. SQLState: 42601 ErrorCode: -115
欢迎提出任何建议。
谢谢
这应该有效:
select A,
(CASE WHEN A IN (select B from tt) THEN 0
ELSE A
END) AS CODE
from T
IN
.
后别名不合适
我认为左联接会在此处帮助您:
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;
请注意,如果键不是唯一的,您可能需要修改它。
正在寻找一种方法来做类似
的事情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] Opérateur de comparaison IN incorrect. SQLState: 42601 ErrorCode: -115
欢迎提出任何建议。 谢谢
这应该有效:
select A,
(CASE WHEN A IN (select B from tt) THEN 0
ELSE A
END) AS CODE
from T
IN
.
我认为左联接会在此处帮助您:
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;
请注意,如果键不是唯一的,您可能需要修改它。