2015-09-07 57 views
-1

我有一个似乎可以解决的问题,但我现在没有正确的想法。TSQL将多列中的值连接到一列中的字符串中

我有一个包含多个列的日期列表。这些名字将会改变,所以我可能需要一个动态代码。下面是表的样子:

ID 2014-01-01 2014-01-02 2014-01-03 2014-01-04 2014-01-05 2014-01-06 (...) 2014-12-31 
1 1    0   1   0   0   0    1 
2 1    1   1   1   1   1    1          
3 1    1   0   1   1   1    0 
4 1    0   0   1   1   1    1 
5 1    1   0   0   0   1    1 
(...) 

因此,有日期与逻辑值01的序列。我需要的是到另一个柱,用这些值的序列添加到该集合作为像例如字符串(用于ID = 1):

101000(...)1

正如我所提到的,日期可以改变。

你能帮我解决这个问题吗?

+0

总结 - 你需要的串接行数据到一个单一的柱上进行(对于不同的列数,并以不同的名称)的代码? –

+1

这味道有点像XY问题。如果你不介意,一旦得到它,你打算如何处理该字符串? –

+1

它是实际的表结构还是'PIVOT'的结果? – lad2025

回答

1

我猜,你所需要的动态SQL:

DECLARE @sql NVARCHAR(MAX) 
    DECLARE @tablename NVARCHAR(128) = 'FUNKTIONEN' 

    SET @sql = (
    SELECT 'CONVERT(NVARCHAR(max),ISNULL('+ name + ','''')) + ' 
    FROM sys.all_columns 
    WHERE object_id = (
     SELECT object_id 
     FROM sys.all_objects 
     WHERE object_id = object_id(@tablename) 
     ) FOR  XML PATH ('')) 

    SET @sql = 'SELECT TOP 1 ' + LEFT(@sql,LEN(@sql)-1) + 'FROM ' + @tablename 

    EXECUTE sp_executesql @sql 
相关问题