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, foound bardass eine einheitliche Sicht auf die jüngsten Werte darstellt. Mit anderen Worten, falls fooenthalten:
ts | foo
--------
1 | A
7 | B
und barenthielt:
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 lagFensterfunktion 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.
fooundbarstreng an oder ist der Testfall in dieser Hinsicht irreführend?