TSQL 将多列中的值连接成一列中的字符串

TSQL Concatenate values from multiple columns into string in one column

我有一个似乎可以解决的问题,但我现在没有正确的想法。

我有一个 table 有多个列,列名中有日期。这些名称将会更改,因此我可能需要一个动态代码。这是 table 的样子:

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

正如我提到的,日期可能会发生变化。

在那种情况下你能帮我吗?

我想,您需要动态 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