2015-09-07 38 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 
相關問題