2017-03-01 37 views
1

我有一個動態的列標題一個SQL Server支點查詢導致類似下面的多列標題

| DATE | Key1   | Key2   | Key 3    |  Key4 | 
|--------|---------------|---------------|-------------------|-----------| 
| 1  |   1 |   2 |  3   |  4 | 
| 2  |  1.29400 |  0.33840 |   0.04270 | (null) | 
| 3  |  60.00000 |  70.00000 |   50.00000 | 180.00000 | 

我的「關鍵」列標題字段TSQL樞軸具有子項,以便鍵1和鍵2可以有同樣的子項,我想回像我下面的支點,讓我有多個列標題:

| DATE | Key1   | Key2   | Key 3    |  Key4 | 
|--------|---------------|---------------|-------------------|-----------| 
|  | subkey1  | subkey2  | subkey3   | subKey4| 
|--------|---------------|---------------|-------------------|-----------| 
| 1  |   1 |   2 |  3   |  4 | 
| 2  |  1.29400 |  0.33840 |   0.04270 | (null) | 
| 3  |  60.00000 |  70.00000 |   50.00000 | 180.00000 | 

我當前的代碼簡化如下:

DECLARE @cols AS NVARCHAR(MAX) 
DECLARE @query AS NVARCHAR(MAX) 

SELECT key, subkey, value into #temp from table 

SELECT @cols = STUFF((SELECT ',' + QUOTENAME([key]) 
       FROM #temp 
       GROUP BY [Key] 
       ORDER BY [Key] 
      FOR XML PATH(''), TYPE 
         ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'') 

set @query = 'SELECT [date], ' + @cols + ' from 
      (
       select [key], [date], value 
       from #temp     
      ) x 
      pivot 
      (
       sum(value) 
       for [key] in (' + @cols + ') 
      ) p 
      ORDER BY [Date] asc' 

execute(@query) 

是否有可能在sql中像這樣堆疊列標題?在excel中,這將類似於在「列」區域中添加多個透視字段

+2

,你將有隻有一個頭,如果這是用於顯示目的,這樣做在演示模塊 – TheGameiswar

+0

你應該檢查這個https://blogs.msdn.microsoft.com/kenobonn/2009/03 /第22 /樞軸對二或更多的場合的SQL服務器/ –

回答

0

您不能像在Excel中那樣擁有多個標題,但可以預先連接標題。 IE

SELECT key+'-'+subkey as key, value into #temp from table 
在SQL Server