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-Key: 380896

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

Printed on: April 19, 2024 at 23:04 o'clock

Member: SeaStorm
SeaStorm Jul 20, 2018 at 07:34:01 (UTC)
Goto Top
Hi

was du suchst ist die Pivot Funktion von mssql
Member: wiesi200
wiesi200 Jul 20, 2018 at 07:47:45 (UTC)
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 ...
Member: EricAG3
EricAG3 Jul 20, 2018 updated at 07:51:57 (UTC)
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.
Member: ukulele-7
ukulele-7 Jul 20, 2018 at 08:02:16 (UTC)
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.
Member: EricAG3
EricAG3 Jul 20, 2018 at 08:54:53 (UTC)
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?
Member: ukulele-7
ukulele-7 Jul 20, 2018 at 09:15:31 (UTC)
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.
Member: SeaStorm
SeaStorm Jul 20, 2018 at 11:10:25 (UTC)
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.