我正在创建一个我需要这个部分的程序。 表格
col1 col2 col3
a null b
null d null
c e null
输出
col1 col2 col3 result
a null b col2
null d null col1,col3
c e null col3
我们可以使用案例陈述吗?
答案 0 :(得分:2)
您还可以按如下方式使用解码。
select t.*,
rtrim(decode(col1,null,'col1,',null)
|| decode(col2,null,'col2,',null)
|| decode(col3,null,'col3,',null),',') as result
from t;
答案 1 :(得分:1)
您可以使用case
:
select col1, col2, col3,
substr( ( (case when col1 is null then ',col1' else '' end) ||
(case when col2 is null then ',col2' else '' end) ||
(case when col3 is null then ',col3' else '' end)
), 2)
from t;
严格来说,else ''
是多余的,因为Oracle会将''
视为NULL
值。但是,我喜欢包含它,因为这种行为与大多数数据库不同。