将列转换为行 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)
这些是我的数据:
我想要这样的结果:
请注意,插入列 "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)