我正在尝试将sql中的键/值对从行转换为列(键)。 尝试了许多解决方案,但仍然对我不起作用。 我的键是动态的,所以我不能预定义它们
--Declare necessary variables
DECLARE @SQLQuery AS NVARCHAR(MAX)
DECLARE @PivotColumns AS NVARCHAR(MAX)
--Get unique values of pivot column
SELECT @PivotColumns= COALESCE(@PivotColumns + ',','') + QUOTENAME(C_Key)
FROM (SELECT DISTINCT C_Key FROM [dbo].[KeyValues]) AS PivotExample
SET @SQLQuery =
N'SELECT TOP(10000) C_GroupID, ' + @PivotColumns + '
FROM
(
SELECT TOP(10000) C_GroupID, C_Key, C_Value FROM [dbo].[MASCI.DynamicRunMetadata]
) AS DynamicTbl
PIVOT(MAX(C_Value)
FOR C_Key IN (' + @PivotColumns + ')) AS P'
EXEC sp_executesql @SQLQuery
这是原始数据
| C_GroupID | C_Key | Value |
+-----------+-------------+--------+
| 7 | randomKey1 | aaa |
| 4 | randomKey2 | ccc |
| 1 | randomKey8 | 1233 |
| 5 | randomKey5 | aaa |
| 6 | randomKey9 | bbb |