我尝试使用This question来执行动态数据透视,但我想使用CTE来获取初始数据。
我的查询如下:
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX);
WITH dataSet (coDate, TransactionDate, TotalBalance, TransDate, collected)
AS
( *SELECT STATEMENT )
SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.category)
FROM dataSet c
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT coDate, ' + @cols + ' from
(
select coDate
, TotalBalance
, collected
, TransDate
from dataSet
) x
pivot
(
SUM(collected)
for category in (' + @cols + ')
) p '
execute(@query)
SQL给出的错误是关键字' SET'附近的语法不正确。我确实尝试在SET语句之前添加分号并使用逗号,但这是我第一次使用PIVOT,所以我不确定CTE如何与它交互。