如果列在单个查询中不为空,则动态连接列 - 对于大量列

时间:2018-05-03 22:58:02

标签: sql sql-server concatenation

如果列不为空,我正在尝试创建将列标题标题与其值连接的查询,例如

            CREATE TABLE Table1
            ([C1] varchar(50), [C2] varchar(50), [C3] varchar(50),[C4] varchar(50),[C5] varchar(50) )
            ;

            INSERT INTO Table1
            ([C1], [C2], [C3], [C4], [C5])
            VALUES
            ('F92', 'title',null,null,'B350'),
            ('F92', 'title',null,null,'B150'),
            ('F92', 'title',null,null,'PB100')
            ;


            SELECT
              CASE WHEN c3 IS NULL THEN null ELSE c3+c5 END
             FROM table1


            drop table table1

这给出了所需的null结果。我有超过50行和超过30个文件(具有可变列名称),因此为每列写入选择查询将花费太长时间,列也可能会更改数量!

这是否可以编写单个查询,该查询将查看表中的所有列并返回以下查询的结果,而不必每次都为每列写入

            SELECT
              CASE WHEN c1 IS NULL THEN null ELSE 'c1'+c1 END,
              CASE WHEN c2 IS NULL THEN null ELSE 'c2'+c2 END,
             CASE WHEN c3 IS NULL THEN null ELSE 'c3'+c3 END,
             CASE WHEN c4 IS NULL THEN null ELSE 'c4'+c4 END,
             CASE WHEN c5 IS NULL THEN null ELSE 'c5'+c5 END
             FROM table1

1 个答案:

答案 0 :(得分:0)

ZLK ..仍然需要我手动选择所有列..我有超过50列的文件,更不用说超过30个文件..有没有办法动态地这样做?