2016-07-13 110 views
0

我正在做一个动态数据透视表来创建一个包含日期的交叉表。该@Query产生的: -SQL Server 2012数据透视错误

SELECT [R_Ref] 
    ,CONCAT(datepart(yyyy,[Transaction_Date]), '-', RIGHT('00' + CONVERT(NVARCHAR(2), datepart(M,[Transaction_Date])), 2)) as 'Month' 
    ,[Transaction_Value] 
    FROM [T-Files].[dbo].[T_Transactions] 
    as MyTX 
PIVOT (
    SUM(MyTX.[Transaction_Value]) 
    FOR MyTX.[Month] IN ( [2016-05], [2016-06], [2016-07]) 
) p 

但产生这些错误

Msg 207, Level 16, State 1, Line 9 
Invalid column name 'Month'. 
Msg 207, Level 16, State 1, Line 3 
Invalid column name 'Transaction_Value'. 

我可以运行顶部选择不转动细,什么是错的PIVOT语句? TIA:o)

回答

0

由于您正在进行一些操作以生成Month,因此您需要将枢轴源设置为sub-select

SELECT * 
FROM (SELECT [R_Ref], 
       Concat(Datepart(yyyy, [Transaction_Date]), '-', RIGHT('00'+ CONVERT(NVARCHAR(2), Datepart(M, [Transaction_Date])), 2)) AS 'Month', 
       MyTX.[Transaction_Value] 
     FROM [T-Files].[dbo].[T_Transactions] AS MyTX) A 
     PIVOT (Sum([Transaction_Value]) 
      FOR [Month] IN ([2016-05], 
            [2016-06], 
            [2016-07])) p 
+0

我想你想用'A'替换枢轴中的MyTX别名,因为这是该点唯一的别名(或者完全删除它们,因为只有一个行涉及到) –

+0

@Damien_The_Unbeliever - 我的坏,更新 –

+0

干杯,工作一个款待:o) –