WITH ステートメントは、1 つ以上の共通テーブル式と SELECT ステートメントから構成されています。
共通テーブル式は、後続の SELECT ステートメントの FROM 文節内のテーブルとして指定可能な、名前付き結果テーブルを定義します。
このオプションは、ユーザーが IBM® DB2
Universal Database™ を使用している場合にのみ使用可能になります。
ユーザーは、SQL ビルダーを使ってのみ WITH ステートメントを作成できます。「SQL ステートメントの新規作成」ウィザードを使って作成することはできません。
共通テーブル式
共通テーブル式は以下の方法で使用することができます。
- ビューを作成せずにビューの代替に使う (ビューの一般的使用が必要でなく、指定位置の更新や削除が不要の時)
- スカラー副選択から派生した列によってグループ化を使用可能にする、または決定論的でないまたは外部アクションのある関数。
- 結果テーブルがホスト変数をベースにしている場合
- 同じ結果テーブルが、FULLSELECT で共用される必要がある場合
- 結果が、再帰を使用して派生される必要がある場合
WITH ステートメントを作成するには以下を行います。
- データ・パースペクティブ内のデータ定義ビューに切り替える。
- データベースを含むプロジェクトまたはフォルダーを拡張し、そして 「ステートメント (Statements)」
フォルダーが見えるまでデータベース・ノードを拡張する。
- 「ステートメント (Statements)」フォルダーを右クリックして、それから
「」をポップアップ・メニュー上でクリックする。
- ステートメントの名前を入力して、そして OK をクリックする。 SQL ビルダーが開きます。
- アウトライン・ビューで WITH ステートメントの構造を検討する。 SELECT ステートメントは WITH ステートメントに自動的に追加されます。
これは 「WITH ステートメント SELECT (WITH statement SELECT)」 として参照されます。
ユーザーは最初に共通テーブル式を定義する必要があり、 その後に共通テーブル式に定義されたテーブルを使用して WITH ステートメント SELECT を完了します。
- 共通テーブル式を追加するには、アウトライン・ビュー内で WITH ステートメントを右クリックして、それから
ポップアップ・メニュー上で「共通テーブル式の追加 (Add Common Table Expression)」をクリックする。 共通テーブル式を完了するには、一時テーブルと、SELECT ステートメントの結果セットをベースにしたその列を定義します。
なぜならば、ユーザーが定義しているテーブルは一時的なものであるため、データ定義ビューの
「テーブル (Tables)」フォルダーには表示されません。
共通テーブル式内に一時テーブルを定義した後、それを WITH ステートメント SELECT に追加することができます。
- アウトライン・ビュー内で、WITH ステートメントの下にある共通テーブル式のノードをクリックする。
- 共通テーブル式のノードを拡張して、それから中に含まれている SELECT ステートメントをクリックする。
- 共通テーブル式の SELECT ステートメントを完了する。
- アウトライン・ビュー内で、共通テーブル式をクリックし、列名を割り当て列を追加して、それから列リストを完了するために
「追加 >> (Add>>)」をクリックする。 名前の付けられた列は、共通テーブル式の SELECT ステートメントの SELECT 文節に定義された列に対応するはずです。
- 必要に応じて同じ方法で共通テーブル式を追加する。
- アウトライン・ビューで WITH ステートメント SELECT を選択する。 それは、statementnameSELECT と名付けられていて、ここで statementname は WITH ステートメントの名前です。
これは、全体として WITH ステートメントに適用される SELECT ステートメントで、 WITH ステートメント内に定義された共通テーブル式を使用します。
- WITH ステートメント SELECT を完了する。
- 完了後は SQL ステートメントを実行するため「」を選択する。
出力が DB 出力ビューに表示されます。