Gegeben zwei Tabellen:
CREATE TABLE foo (ts timestamp, foo text);
CREATE TABLE bar (ts timestamp, bar text);
Ich möchte eine Abfrage schreiben , dass die Renditen Werte für ts
, foo
und bar
dass eine einheitliche Sicht auf die jüngsten Werte darstellt. Mit anderen Worten, falls foo
enthalten:
ts | foo
--------
1 | A
7 | B
und bar
enthielt:
ts | bar
--------
3 | C
5 | D
9 | E
Ich möchte eine Abfrage, die Folgendes zurückgibt:
ts | foo | bar
--------------
1 | A | null
3 | A | C
5 | A | D
7 | B | D
9 | B | E
Wenn beide Tabellen gleichzeitig ein Ereignis haben, spielt die Reihenfolge keine Rolle.
Ich konnte die benötigte Struktur mit union all und Dummy-Werten erstellen:
SELECT ts, foo, null as bar FROM foo
UNION ALL SELECT ts, null as foo, bar FROM bar
Das gibt mir eine lineare Zeitleiste mit neuen Werten, aber ich bin nicht in der Lage, die Nullwerte basierend auf den vorherigen Zeilen zu füllen. Ich habe die lag
Fensterfunktion ausprobiert , aber AFAICT wird nur die vorherige Zeile angezeigt, nicht rekursiv rückwärts. Ich habe rekursive CTEs untersucht, bin mir jedoch nicht ganz sicher, wie die Start- und Beendigungsbedingungen eingerichtet werden sollen.
foo
undbar
streng an oder ist der Testfall in dieser Hinsicht irreführend?