erwarte ich habe derzeit eine Tabelle m
von folgendem Format:Crosstab Funktion in Postgres eine eine Zeile Ausgabe zurückkehrt, wenn ich mehrere Zeilen
id scenario period 1 2 3 4
2 1 1 1
2 1 2 1
2 1 3 1
2 1 4 1
2 2 1 1
2 2 2 1
2 2 3 1
2 2 4 1
2 3 1 1
2 3 2 1
2 3 3 1
2 3 4 1
:
id scenario period ct
2 1 1 1
2 1 2 1
2 1 3 1
2 1 4 1
2 2 1 1
2 2 2 1
2 2 3 1
2 2 4 1
2 3 1 1
2 3 2 1
2 3 3 1
2 3 4 1
ich die folgende Tabelle erstellen möchten Die Erweiterung tabellefunc wurde bereits in meiner Postgres-Datenbank erstellt. Ich versuche gerade, die crosstab()
Funktion zu verwenden, um den Drehpunkt abzuschließen. Allerdings bin ich einen Tisch zu bekommen, die wie folgt aussieht:
id scenario period 1 2 3 4
2 1 1 1 1 1 1
die Abfrage Ich habe versucht:
SELECT * FROM crosstab(
'SELECT id, scenario, period, ct FROM m
ORDER BY 1',
'SELECT DISTINCT period FROM m
ORDER BY 1')
AS (id, scenario, period, 1, 2, 3, 4);
Die von Ihnen eingegebene Abfrage ist schlicht ungültig. (In der Spaltendefinitionsliste fehlen Datentypen). Was ist die eigentliche Abfrage, die Sie versucht haben? –
Mein Datensatz ist viel größer, aber ich wollte ein einfacheres Beispiel zeigen. Ich glaube, die richtigere Abfrage wäre: SELECT * FROM Kreuztabellen- ( \t \t 'SELECT id, Szenario, Zeit, ct VON m \t \t \t ORDER BY 1', \t \t ‚SELECT DISTINCT Zeitraum vom m \t \t \t ORDER BY 1 ') AS (ID int, Szenario int, Periode int, "1" int, "2" int, "3" int, "4" int); –