2つのテーブルがある場合:
CREATE TABLE foo (ts timestamp, foo text);
CREATE TABLE bar (ts timestamp, bar text);
私はのための戻り値というクエリを書きたいts
、foo
とbar
その直近の値の統一見解を表しています。つまり、foo
含まれている場合:
ts | foo
--------
1 | A
7 | B
そしてbar
含まれています:
ts | bar
--------
3 | C
5 | D
9 | E
私は返すクエリが必要です:
ts | foo | bar
--------------
1 | A | null
3 | A | C
5 | A | D
7 | B | D
9 | B | E
両方のテーブルに同時にイベントがある場合、順序は関係ありません。
union allとダミー値を使用して、必要な構造を作成できました。
SELECT ts, foo, null as bar FROM foo
UNION ALL SELECT ts, null as foo, bar FROM bar
これにより、新しい値の線形タイムラインが得られますが、前の行に基づいてnull値を設定する方法を見つけることはできません。lag
ウィンドウ関数を試しましたが、AFAICTは前の行のみを参照し、再帰的に後方を検索しません。再帰CTEを見てきましたが、開始条件と終了条件の設定方法がよくわかりません。
誰手間、保存するにはsqlfiddle.com/#!15/511414
—
クレイグ・リンガー
回答が出された後に質問の性質を変更するのではなく、新しい質問をしてください。いつでも参照用にこれにリンクできます。(回答がある場合は、独自の回答を提供することもできます。)元のバージョンは、一般の人々にとって興味深いものでなければなりません。単一の質問で多くを詰め込まないようにしましょう。
—
アーウィンブランドステッター
過負荷でごめんなさい。フォローアップを削除し、新しい質問として追加しました。
—
クリストファーカリー
foo
とともにbar
厳密に上昇していますか、またはこの点でテストケースが誤解を招いていますか?