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

时间:2015-09-07 08:01:23

标签: sql-server tsql dynamic sql-server-2012 concatenation

我遇到麻烦似乎有可能解决,但我现在没有正确的想法。

我有一个包含多个列的表,列名中包含日期。这些名称将会改变,所以我可能需要一个动态代码。表格如下:

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

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

在这种情况下,你能帮助我吗?

1 个答案:

答案 0 :(得分: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