現在、SQL Server SQL ステートメントを同等の ANSI 汎用ステートメントに変換していますが、WITH ステートメントを使用した再帰ステートメントに悩まされています。
この問題に集中するために、次のように問題を単純化します。
テーブルが 2 つある場合
報告単位
- col1: キー
- col2: ParentReportingUnitKey
施設
- col1: キー
- col2: ParentReportingUnitKey
この構造は、施設までのレポーティング ユニットの階層を記述しています。レポーティング ユニットは、0 .. 1 の直接の親レポーティング ユニットと 0 .. n の子レポーティング ユニットを持つことができます。
施設は、レポーティング ユニットにリンクする「リーフ」レコードです。
ANSI 92 の有効な SQL ステートメント (または、最悪の場合、Oracle、DB2、および SQL Server で動作するもの) を作成する必要があります。これは、階層の任意の場所にある特定のレポート ユニットに関連するすべての機能を返します。
例えば
- ReportingUnit R1 には ReportingUnit の子 R1.1 と R1.2 があります
- ReportingUnit R1.1 には子 R1.1.1、R1.1.2 があります
ReportingUnit R1.2 には子 R1.2.1、R1.2.2 があります
施設 F1 には、親報告単位 R1.1.1 があります。
- 施設 F2 には、親報告単位 R1.1.2 があります。
- 施設 F3 には、親報告単位 R1.2.1 があります。
- 施設 F4 には、親報告単位 R1.2.2 があります。
ReportingUnit テーブルには 0 ~ n レベルの再帰がある可能性があることを念頭に置いて、パラメーター ReportingUnit=R1 を指定して SQL ステートメントから 4 つの機能すべてを返すにはどうすればよいでしょうか?