2016-07-13 6 views
0

Ich mache einen dynamischen Drehpunkt, um eine Kreuztabelle mit Daten zu erstellen. Die @Query generiert: -SQL Server 2012-Pivot-Fehler

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 

aber diese Fehler

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'. 

erzeugt, kann ich die oben wählen, ohne den Dreh gut laufen, was in der PIVOT Aussage falsch ist? TIA: o)

Antwort

0

Sie müssen Pivot-Quelle in sub-select setzen, da Sie einige Manipulation vornehmen, um Month zu generieren.

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

Ich glaube, Sie die 'MyTX' Aliase in Pivot ersetzen mögen mit' A', da dies die einzigen alias ist von diesem Punkt im Spiel (oder sie einfach ganz entfernen, da wieder, gibt es nur eine rowset ist beteiligt) –

+0

@Damien_The_Unbeliever - My bad, .. Aktualisiert –

+0

Cheers, arbeitete ein Leckerbissen: o) –