转换列行的SQL Server
答
您可以使用临时表来存储您的应用程序值,然后将它们连接到变量中。最后,使用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值不是不同。 –
我与你的榜样试过,但如果我使用它,我必须指定所有的值是“应用程序”,可存储,在未来,他们将超过1000 –
感谢您使用“SQL Server dynami PIVOT”。你能帮我解码吗? –