Datum

Fragen und Probleme rund um die Abfragespache SQL.
castorp
Erfahrener Benutzer
Beiträge: 1141
Registriert: Sa 27. Jun 2009, 22:24
Wohnort: Bayern

Re: Datum

Beitrag von castorp » Mo 19. Aug 2019, 14:21

Wenn es irgendwie geht, sollte man pivot/crosstab grundsätzlich in der Anwendung machen, die die Daten anzeigt. Das ist wesentlich leichter und flexibler (und macht auch das SQL deutlich einfacher).

Wenn es wirklich mal sein muss, dass man mehrere Zeilen zu Spalten transponieren muss, gehe ich eigentlich mehr und mehr dazu über, die dynamischen "Spalten" in eine JSON Spalte zu aggregieren. In den meisten Fällen ist das fast genauso gut, und deutlich einfacher zu verwenden - und es ist vollständig "dynamisch". Wenn neue Werte für die "Spalten" hinzukommen passiert das automatisch, ohne dass man das Statement ändern müsste.

Z.b. so wie hier beschrieben: https://blog.sql-workbench.eu/post/pivot-alternatives/
A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

simar
Benutzer
Beiträge: 54
Registriert: Di 9. Okt 2018, 17:40

Re: Datum

Beitrag von simar » Mo 19. Aug 2019, 14:57

hört sich gut an, aaaaber mir zu schwierig

castorp
Erfahrener Benutzer
Beiträge: 1141
Registriert: Sa 27. Jun 2009, 22:24
Wohnort: Bayern

Re: Datum

Beitrag von castorp » Mo 19. Aug 2019, 15:00

Dann mach's in der Anwendung wenn Du die Daten anzeigst.
A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

simar
Benutzer
Beiträge: 54
Registriert: Di 9. Okt 2018, 17:40

Re: Datum

Beitrag von simar » Mo 19. Aug 2019, 15:17

wie meinst du das?

das ist meine Anzeige aus Abfrage
nr | erg | wie oft
-----+-----
100 | 10 | 3
100 | 9 | 1
100 | 8 | 1
200 | 10 | 1
200 | 1 | 1
200 | 7 | 2

Gisman
Erfahrener Benutzer
Beiträge: 1131
Registriert: Fr 20. Jan 2006, 15:30
Wohnort: Pfalz
Kontaktdaten:

Re: Datum

Beitrag von Gisman » Di 20. Aug 2019, 08:15

Du meinst ein Pivot? Mit crosstab sollte das gehen, ist aber IMHO recht umständlich. Wie wird das am Ende denn dargestellt? Ich mache solche Darstellungen meist im jeweiligen Client.
Gruß Uwe

pogomips
Erfahrener Benutzer
Beiträge: 105
Registriert: Fr 18. Nov 2016, 09:55

Re: Datum

Beitrag von pogomips » Di 20. Aug 2019, 22:05

crosstab wurde ja eigentlich schon genannt (sogar vom TE).
Es ist halt wie ebenfalls genannt nicht dynamisch, was problematisch ist.
Wenn, dann könnte im Fall hier nur die Variante mit 2 Selects, eins für Daten, eins für Header genommen werden.
Ein Select für Header ergibt aber dynamische Ergebnisse, außer man sorgt absichtlich dafür, dass das Headerstatement ein statisches Ergebnis hat. Hier vielleicht mit generate series 1-10 oder sowas.

Antworten