2011-12-21 71 views
0

我有一個動態列創建動態表。列A和列B是靜態的,其餘列是基於另一個表的結果動態創建的。考慮下面的示例代碼,回覆:轉置動態表 - TSQL

SELECT dutydate, dayname, shifts, myShift 
    FROM 
     (SELECT column A, column B, dynamic column C, dynamic column D, dynamic column E, ...... (columns may increase) 
      FROM temp) p 
    UNPIVOT 
    (myShift FOR shifts IN (dynamic column C, dynamic column D, dynamic column E, ...... (columns may increase))) 
AS unpvt; 

臨時表是動態創建的表。有沒有一種方法可以根據上述場景進行轉置。

+0

你是什麼意思轉的@list_of_dynamic_columns名單是什麼? – 2011-12-21 09:37:46

+0

我假設'轉置'他的意思是'正常化'。 – 2012-04-04 07:45:22

回答

0

您不是在編寫如何使用動態列創建表格。你所能做的就是將該命令創建爲具有列列表的字符串,然後執行該字符串。

declare @cmd varchar(max), @list_of_dynamic_columns varchar(255) 
set @list_of_dynamic_columns = 'co1, col2, col2' 

set @cmd = 'SELECT dutydate, dayname, shifts, myShift 
    FROM 
     (SELECT column A, column B, '[email protected]_of_dynamic_columns +' 
      FROM temp) p 
    UNPIVOT 
    (myShift FOR shifts IN ('[email protected]_of_dynamic_columns +')) 
AS unpvt;' 

print @cmd -- to see what you executed 
exec (@cmd) 

你需要做的只是創建