将CTE与动态轴

时间:2016-11-29 20:31:45

标签: sql-server-2008

我尝试使用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如何与它交互。

0 个答案:

没有答案