以下で説明する非常に特定の状況での再帰的 SQL の使用について質問があります。
(ID, value)スキーマとこれらのサンプル行を持つテーブル A があります。
(1,1000) (2,800) (3,300) (4,600)
(ID, value)スキーマとこれらのサンプル行を含むテーブル B があります。
(1,600) (2,300) (3,400) (4,600) (5,600) (6,400)
目的は、A から最大 ID を選択し、B から最大 ID を選択し、A の値から B の値を減算して、このような操作の行を生成する必要があることです。
最終結果はスキーマ(ID-A、ID-B、減算値)である必要があり、生成される行は次のとおりです。
(1,1,600) は、A.ID=1 では 400 のまま、B.ID=1 では 0 のままです。 (1,2,300) は、A.ID=1 では 100 のまま、B.ID=2 では 0 のままです。 (1,3,100) は、A.ID=1 では 0 のまま、B.ID=3 では 300 のままです。 (2,3,300) は、A.ID=2 では 500 のまま、B.ID=3 では 0 のままです。 (2,4,500) は A.ID=2 では 0 のまま、B.ID=4 では 100 のままです。 (3,4,100) は、A.ID=3 では 200 のまま、B.ID=4 では 0 のままです。 (3,5,200) は、A.ID=3 では 0 のまま、B.ID=5 では 400 のままです。 (4,5,400) は、A.ID=4 では 200 のまま、B.ID=5 では 0 のままです。 (4,6,200) は、A.ID=4 では 0 のまま、B.ID=6 では 200 のままです。
この時点で、テーブルの 1 つの行が終了したので、停止する必要があります。
これが再帰SQLで可能かどうかはわかりません。確かに、テーブルAとBをマージして、計算を実行して上記で説明したものを生成できる固定テーブルを生成する必要があると思いますが、そうしませんアプリオリにわからない休符を管理する方法を知っています。たとえば、時間 t の値は t-1 で何が起こったかに依存します)。
再帰SQLでこれを管理できるかどうかを理解するのに役立つアドバイスやリンクはありますか?
事前にどうもありがとうございました。