2016-07-13 4 views
0

Я делаю динамический стержень, чтобы создать кросс-вкладку с датами. @Query Вырабатываемые: -Ошибка SQL Server 2012 pivot

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

Вам необходимо поместить исходный код в sub-select, так как вы делаете манипуляции для генерации Month.

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

Я думаю, что вы хотите заменить 'MyTX' псевдонимами в вашей оси с' Ā', так как это единственный псевдоним в игре к этому моменту (или просто удалить их полностью, так как опять же, есть только один набор строк участвует) –

+0

@Damien_The_Unbeliever - Мой плохой, .. Обновлено –

+0

Приветствия, обработано: o) –