2017-11-20 2 views
0

Ich erhalte einen Fehler in der Abfrage unten. Die Sub-Abfrage funktioniert so wie sie sollte; 3 Spalten, ID, Typ, Betrag. Ich habe ein Problem mit der Pivot-Syntax, nach SSMS "in der Nähe des Schlüsselwortes für FOR".SSMS-Abfrage - Falsche Syntax in der Nähe des Schlüsselwortes "FOR"

Die Abfrage spiegelt eine Frage in SO, und ich sehe eine Tonne anderer ähnlicher Fragen, aber ich kann nicht scheinen, das Problem zu finden. Ich habe versucht, Klammern zu verwenden, die Joins in der Unterabfrage zu beseitigen und mich zu verbinden, nachdem die Daten geschwenkt wurden, aber nichts hat bis jetzt funktioniert.

SELECT 
dboBillingAdjustments.CMSId 
,DataPivot.Certification 
,[DataPivot.Contractor Supplement] 

FROM 
    (
     SELECT 
      Businesses.CMSId 
      ,BillingAdjustments.Type 
      ,BillingAdjustments.ContractorAmount 

FROM BillingAdjustments 
      JOIN BillingAdjustmentTypes on BillingAdjustmentTypes.Id = BillingAdjustments.TypeId 
     JOIN Businesses on Businesses.UId = BillingAdjustments.BusinessId 

    WHERE 
     DateKey = 20171104 AND 
     IsSettled = 1 

) as dboBillingAdjustments 

PIVOT 
(
    BillingAdjustments.ContractorAmount FOR Type in ([Certification], [Contractor Supplement]) 
) as DataPivot 
+1

Sie müssen 'Aggregation function' gibt, zum Beispiel:' MAX (BillingAdjustments.ContractorAmount) für Typ in ... '[ Siehe Syntax] (https://docs.microsoft.com/en-us/sql/t-sql/queries/from-using-pivot-und-unpivot) – Sami

+0

Das hat es getan. Jetzt, wo ich darüber nachdenke, ist genau das, wofür ein Drehpunkt steht. Ich habe die Syntax nicht verstanden. Vielen Dank! –

Antwort

0

Mit PIVOT benötigen Sie eine Aggregationsfunktion MAX(),MIN(),AVG()... zum Beispiel:

PIVOT 
(
    MAX(BillingAdjustments.ContractorAmount) 
    FOR Type in ([Certification], [Contractor Supplement]) 
) as DataPivot 
Verwandte Themen