2016-07-13 134 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) –