连接多个case when语句的结果



当满足条件时,我想显示在when语句上构建的多个字符串的串联。如下:

select
case
  when T1.Field is not null then 'T1,' 
  when T2.Field is not null then /*last results*/ + 'T2,' 
  when T3.Field is not null then /*last results*/ + 'T3,'
end

from T1 
left outer join T2 on ...
left outer join T3 on ...

终于发现了。。。我以前没有意识到这是可能的:

select
  case when T1.Field is not null then 'T1,' else '' end
+ case when T2.Field is not null then 'T2,' else '' end
+ case when T3.Field is not null then 'T3,' else '' end as result
from T1 
left outer join T2 on ...
left outer join T3 on ...

为什么不尝试使用ISNULL?

类似的东西

ISNULL(T1.Field,'') + ISNULL(T2.Field,'') + ... + ISNULL(TN.Field,'')

为了连接文本,我需要将加号"+"更改为双竖线"||":

select
  case when T1.Field is not null then 'T1,' else '' end
|| case when T2.Field is not null then 'T2,' else '' end
|| case when T3.Field is not null then 'T3,' else '' end as result
from T1 
left outer join T2 on ...
left outer join T3 on ...

最新更新