title: Convert Access Crosstab Query to SQL Server
body: <p>I have a crosstab query in MS Access which runs very slow after migrating my backend to an SQL Server 2017. So I want to create a view in SQL that does the same aggregation.</p>
  <p>MS Access Query:</p>
  <pre><code>TRANSFORM Sum([Auftrag Positionen].Gesamtpreis) AS SummevonGesamtpreis
  SELECT Format$([Stammdaten Datum].[Datum],'yyyy\/mm    mmmm') AS Monat, Sum([Auftrag Positionen].Gesamtpreis) AS Gesamt
  FROM [Stammdaten Datum] LEFT JOIN (Auftrag LEFT JOIN ([Stammdaten Statistik] RIGHT JOIN [Auftrag Positionen] ON [Stammdaten Statistik].Kennzeichen = [Auftrag Positionen].Statistik) ON Auftrag.[Auftrags-Nummer] = [Auftrag Positionen].[Auftrags-Nummer]) ON [Stammdaten Datum].Datum = Auftrag.Auftragseingang
  WHERE (((Auftrag.[Auftrag-Angebot])=&quot;Auftrag&quot;))
  GROUP BY Format$([Stammdaten Datum].[Datum],'yyyy\/mm    mmmm')
  ORDER BY Format$([Stammdaten Datum].[Datum],'yyyy\/mm    mmmm') DESC 
  PIVOT [Stammdaten Statistik].Beschreibung; 
  </code></pre>
  <p>I get that I can cancel out the access date formatting:</p>
  <pre><code>SELECT DATEADD(MONTH, DATEDIFF(MONTH, 0, [Stammdaten Datum].[Datum]), 0) AS Monat, Sum([Auftrag Positionen].Gesamtpreis) AS Gesamt
  FROM [ROBI_1].[dbo].[Stammdaten Datum] LEFT JOIN ([ROBI_1].[dbo].Auftrag LEFT JOIN (ROBI_1.dbo.[Stammdaten Statistik] RIGHT JOIN ROBI_1.dbo.[Auftrag Positionen] ON [Stammdaten Statistik].Kennzeichen = [Auftrag Positionen].Statistik) ON Auftrag.[Auftrags-Nummer] = [Auftrag Positionen].[Auftrags-Nummer]) ON [ROBI_1].[dbo].[Stammdaten Datum].Datum = Auftrag.Auftragseingang
  WHERE ((([Auftrag].[Auftrag-Angebot])='Auftrag'))
  GROUP BY DATEADD(MONTH, DATEDIFF(MONTH, 0, [Stammdaten Datum].[Datum]), 0)
  ORDER BY DATEADD(MONTH, DATEDIFF(MONTH, 0, [Stammdaten Datum].[Datum]), 0) DESC 
  </code></pre>
  <p>But I don't know how to do the pivot aggregation, everything I've tried gave me syntax errors. (I am a noob in SQL/T-SQL indeed).
  I appreciate any help!</p>