2015-04-23 75 views
3

這些都是我的數據:轉換列行的SQL Server

enter image description here

,我想有這樣的結果:

enter image description here

請注意,該值插入列「應用程序「,沒有得到相同的值或相同的數量,所以一旦我可以找到2行和另一次10行

+0

我與你的榜樣試過,但如果我使用它,我必須指定所有的值是「應用程序」,可存儲,在未來,他們將超過1000 –

+0

感謝您使用「SQL Server dynami PIVOT」。你能幫我解碼嗎? –

回答

3

您可以使用臨時表來存儲您的應用程序值,然後將它們連接到變量中。最後,使用T-SQL,你可以構建動態透視:

CREATE TABLE #VALS (VALS NVARCHAR(MAX)) 

INSERT INTO #VALS 
SELECT DISTINCT APP 
FROM [TABLE1] 

DECLARE @SQL NVARCHAR(MAX) 
DECLARE @VALS NVARCHAR(MAX) 

SELECT @VALS = COALESCE(@VALS+', ','') + '[' + VALS + ']' FROM #VALS 

SET @SQL = ' 
SELECT NAME, '[email protected]+' 
FROM [TABLE1] 
PIVOT (MAX([VERSION]) FOR APP IN ('[email protected]+')) PIV' 
PRINT @SQL 
EXEC (@SQL) 
+0

請注意這一點。如果您的APP列不同,這隻會按預期工作。否則它會嘗試將您的版本號加在一起... 編輯:我是偏執狂,所以我已經將SUM子句從SUM更改爲MAX,但是如果您的APP值不是不同。 –