Ludwigmller
SQL-Guru
- Beiträge
- 172
Moin,
ich habe eine Tabelle Messwerte, wo je raum_id, messgroesse und Tag ein Wert gespeichert ist. Wenn Werte fehlen, sollen diese in der Abfrage x Tage fortgeführt werden.
Zum Beispiel:
Dann soll die Ausgabe für x=3 wie folgt aussehen:
2023-12-26 1 SW 2.5
2023-12-27 1 SW 2.5
2023-12-28 1 SW 2.5
2023-12-29 1 SW 2.5
2023-12-30 1 SW 2.8
Für messgroesse sollen alle in Tabelle messgroessen vorhandenen gejoined werden.
Hier ein Fiddle mit Testdaten und meinem Versuch. Wenn ich
ich habe eine Tabelle Messwerte, wo je raum_id, messgroesse und Tag ein Wert gespeichert ist. Wenn Werte fehlen, sollen diese in der Abfrage x Tage fortgeführt werden.
Zum Beispiel:
Code:
INSERT INTO messwerte (zeitstempel, raum_id, messgroesse, wert) VALUES
('2023-12-26'::timestamp, 1, 'SW', 2.5),
('2023-12-30'::timestamp, 1, 'SW', 2.8),
2023-12-26 1 SW 2.5
2023-12-27 1 SW 2.5
2023-12-28 1 SW 2.5
2023-12-29 1 SW 2.5
2023-12-30 1 SW 2.8
Für messgroesse sollen alle in Tabelle messgroessen vorhandenen gejoined werden.
Hier ein Fiddle mit Testdaten und meinem Versuch. Wenn ich
DISTINCT ON
weglasse, gibt es pro Tag auch mehrere Werte der Vortage, auch wenn für den jeweiligen Tag tatsächliche WErte vorhanden sind. Mit DISTINCT ON
, ist es zum einen nur eine Notlösung "mit Gewalt", zum anderen wird manchmal der Wert des Vortags ausgegeben, obwohl es einen Wert für den Tag gibt.