0

我正在从 SQL Server 2005 数据库中检索几条记录:

在此处输入图像描述

我想透视数据以显示如下结果:

在此处输入图像描述

日期和过程可以是无限的,所以我想使用动态枢轴。我尝试了一些解决方案,但无法使其发挥作用。

4

1 回答 1

1

好吧,首先,你不能在一个表中拥有无限数量的列,所以我假设你有更少的 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 。

于 2013-03-25T18:11:03.847 回答