将多个列名称连接成1列SQL

时间:2014-07-17 14:49:29

标签: sql sql-server sql-server-2005

我在这里遇到小问题。我有一张4柱的桌子

Column1 | Column2 | Column3 | Column4
NULL.........NULL.........NULL.........NULL
ABC..........NULL..........XYZ...........NULL


第1,2和1,2列3可能有一些值或null,column4为null
当column1,2或3中的任何一个不为null时,我必须使用该列名更新column4。我期待以下结果

Column1 | Column2 | Column3 | Column4
NULL.........NULL.........NULL.........NULL
ABC..........NULL..........XYZ...........Column1,Column3


任何人都可以指导我如何实现这一结果 任何帮助表示赞赏。提前谢谢。

1 个答案:

答案 0 :(得分:2)

使用大小写来测试空值,并在非空值时返回列名。 这些东西可以删除你在字符串中首先得到的额外逗号。

update YourTable 
set Column4 = stuff(case when Column1 is not null then ',Column1' else '' end +
                    case when Column2 is not null then ',Column2' else '' end +
                    case when Column3 is not null then ',Column3' else '' end, 1, 1, '')

SQL Fiddle