数据透视表返回数据透视表上带有空值的多行

时间:2019-06-26 01:37:31

标签: sql sql-server

我正在尝试将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    |

0 个答案:

没有答案