我正在从 SQL Server 2005 数据库中检索几条记录:
我想透视数据以显示如下结果:
日期和过程可以是无限的,所以我想使用动态枢轴。我尝试了一些解决方案,但无法使其发挥作用。
我正在从 SQL Server 2005 数据库中检索几条记录:
我想透视数据以显示如下结果:
日期和过程可以是无限的,所以我想使用动态枢轴。我尝试了一些解决方案,但无法使其发挥作用。
好吧,首先,你不能在一个表中拥有无限数量的列,所以我假设你有更少的 1023 个进程。无论如何,您需要为此使用动态枢轴:
DECLARE @Processes AS NVARCHAR(MAX), @Query AS NVARCHAR(MAX);
SELECT @Processes = STUFF(( SELECT DISTINCT ',' + QUOTENAME(Process)
FROM YourTable
WHERE Process IS NOT NULL
FOR XML PATH(''),
TYPE).value('.', 'NVARCHAR(MAX)'),1,1,'')
SET @Query = '
SELECT *
FROM YourTable T
PIVOT(SUM([Percent]) FOR Process IN ('+@Processes+')) AS PT'
EXEC(@Query)
这是一个带有现场演示的 sqlfiddle 。