使用这个,http://www.databasejournal.com/features/mssql/converting-rows-to-columns-pivot-and-columns-to-rows-unpivot-in-sql-server.html,作为我的参考我已经想出如何将一个动态填充的列转换为一系列列。
然而,我有2"动态"我需要PIVOT的同一源表中的列。我已经看过一些如何使用硬编码但没有(到目前为止)使用动态值的例子。
任何人都可以解释如何转动多个列吗?
我准备了这段代码来填充我的@PivotColumn
变量:
--- Get unique values of pivot column
SELECT @PivotColumns= COALESCE(@PivotColumns + ',','') + QUOTENAME(META_KEY)
FROM (SELECT DISTINCT META_KEY FROM [dbo].[TASK_META_DATA]) AS TASK_META_DATA
然后运行此语句以关联"展平"列到特定ID:
SET @SQLQuery =
'SELECT TYPE_ID, ' + @PivotColumns + '
FROM [dbo].[TASK_META_DATA]
PIVOT (count(META_VALUE)
FOR META_KEY IN (' + @PivotColumns + ')) AS P'
--- Execute dynamic query
EXEC sp_executesql @SQLQuery
我想要PIVOT的第二列是META_VALUE(是的,该表有名为META_KEY和META_VALUE的列)。
我对如何构建和使用第二个PIVOT语句感到困惑。