将列转换为行 sql 服务器

convert columns to rows sql server

这些是我的数据:

我想要这样的结果:

请注意,插入列 "App" 的值没有相同的值或相同的数量,所以有一次我找到了 2 行,另一次找到了 10 行

您可以使用临时文件 table 来存储您的应用程序值,然后将它们连接到一个变量中。最后使用 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, '+@VALS+'
FROM [TABLE1]
PIVOT (MAX([VERSION]) FOR APP IN ('+@VALS+')) PIV'
PRINT @SQL
EXEC (@SQL)