SQL -> Gruppieren nach Spalte und Reihe wie Matrix

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

Hi,

ich habe eine Grundtabelle mit allen einzelnen Umsätzen.

Aus dieser Grundtabelle möchte ich jetzt alle Umsätze nach Woche und nach Jahr selektieren mittels SQL.

Sprich in den jeweiligen Spalten die Jahre und in den Reihen die Umsätze pro Woche.

Das mit den Reihen ist ja mit GROUP-BY einfach gemacht. Aber muss ich für die jeweiligen SELECT nach Jahren ein subquery starten oder gibt es da eine clevere und einfachere Methode?
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

So arbeitet man mit SQL nicht. In Spalten werden keine Daten wie Jahre kodiert. Mache einen select über jahr woche umsatz.
Später kannst du bei der Ausgabe gerne die Jahre nebeneinander ausgeben.
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

Ja, habe ich auch gemerkt. Danke.
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Ich würde es jetzt nicht unbedingt empfehlen aber Postgres hat dafür die crosstab Funktionen.

Alternativ zu subqueries könnten hier auch schon aggregate expressions mit einer filter clause helfen.
Antworten