ericag3
Goto Top

SQL-Frage MSSQL

Hallo zusammen,
folgende Tabelle sei gegeben.

2018-07-20 09_30_43-microsoft sql server management studio

Mit welcher Funktion kann ich mir die Spalten wie folgt basteln.


Mit self join und subselect war ich bisher erfolglos.
Hat jmd eine Idee? Vielen Dank.
2018-07-20 09_31_13-microsoft sql server management studio

Content-ID: 380896

Url: https://administrator.de/contentid/380896

Ausgedruckt am: 22.11.2024 um 16:11 Uhr

SeaStorm
SeaStorm 20.07.2018 um 09:34:01 Uhr
Goto Top
Hi

was du suchst ist die Pivot Funktion von mssql
wiesi200
wiesi200 20.07.2018 um 09:47:45 Uhr
Goto Top
Hallo,

mir fällt hier auch spontan die Frage ein wie man das ganze Weiter verarbeiten will?

Denn wenn du das dann mit Excel machen willst würde sich hier der Analysis Service gerade zu aufdrängen.
https://docs.microsoft.com/de-de/sql/analysis-services/analysis-services ...
EricAG3
EricAG3 20.07.2018 aktualisiert um 09:51:57 Uhr
Goto Top
Wieso habe ich von der Pivot-Funktion in mssql noch nie etwas gehört...

Danke, hiermit spiele ich jetzt erst einmal ein wenig rum.
ukulele-7
ukulele-7 20.07.2018 um 10:02:16 Uhr
Goto Top
Geht natürlich auch mit einer großen Zahl an self joins aber Pivot ist hier angebracht. Wird allerdings schwer wenn du die Spaltennamen nicht kennst wenn das Query erstellt wird.
EricAG3
EricAG3 20.07.2018 um 10:54:53 Uhr
Goto Top
Es geht voran...

Ich kann nun entweder Spalten je Jahr erstellen:
PIVOT (sum(umsatz)for Kalenderjahr in ([2017],[2018])) as PivotTable;

Oder Spalten je Artikelgruppe:
PIVOT (sum(umsatz)for AG in ([1],[2])) as PivotTable;

Lässt sich das kombinieren? Und wie bilde ich den Gesamtumsatz (AG1 + AG2) ab?
ukulele-7
ukulele-7 20.07.2018 um 11:15:31 Uhr
Goto Top
Wenn ich das mal so auf die schnelle lese musst du dir einen Select davor bauen der dir die Ergebnisse gruppiert / aggregiert. Hab mir hier mal ein Beispiel angesehen:
https://code.i-harness.com/de/q/1442fc5

Allerdings würde ich dir von dem Select in der Lösung abraten sondern mit sum(CASE WHEN AG=1 THEN Umsatz ELSE 0 END) AS Umsatz_AG1 arbeiten um die Werte zu ermitteln.
SeaStorm
SeaStorm 20.07.2018 um 13:10:25 Uhr
Goto Top
Die einfachste Variante die nachher auch am wenigsten Ressourcen bei der Abfrage kostet, wäre das in ein oder mehrere (indexed) Views zu packen.