構文における繰り返し項目の取り扱い
SELECT ステートメント構文の一部には繰り返し項目が含まれ、1 つ以上の繰り返し項目が繰り返し区切り文字によって区切られています。一部の繰り返しフラグメントの繰り返し区切り文字は、コンマ (,) であったり、定数であったり、オペランドであったり、あるいはスペースである場合もあります。複数の繰り返し項目を指定し、区切り文字が定数であった場合には、「Advanced SELECT Prototyping (拡張 SELECT プロトタイピング)」により正しい区切り文字が挿入されます。それ以外の場合には、他の要素の場合と同様に区切り文字を選択する必要があります。
繰り返し項目を含む SELECT 文節のフラグメントを作成する方法を示す単純な例を選択してみましょう。例えば、スキル・タイプ、等級、および入社年別にグループ化された会社の社員に関する特定の情報 (SELECT ステートメントの残りの部分で指定されます) を表示するとします。
- 最初の例 (例 1 (単純な SQL ステートメントの作成) を参照) のステップ 1 ~ 5 を繰り返して、subselect clause (SUBSELECT 文節) の構文が表示されるようにします。
Process Options Utilities Help ────────────────────────────────────────────────────────────────────────────── FM/Db2 (DFG2) Advanced SELECT Prototyping Prototyping: subselect clause Status: clause incomplete ─ select ─ from ─┬─────────┬─┬───────────┬─┬──────────┬─ └─ where ─┘ └─ groupby ─┘ └─ having ─┘ Command ===> _____________________________________________________ Scroll PAGE F1=Help F2=Split F3=Exit F4=Deselect F5=InsRpt F6=Executed F7=Backward F8=Forward F9=Swap F10=PrvRpt F11=NxtRpt F12=Cancel
- カーソルを「groupby」フラグメントに移動します。
- Enter キーを押します。GROUP BY clause (GROUP BY 文節) の構文が表示されます。
Process Options Utilities Help ────────────────────────────────────────────────────────────────────────────── FM/Db2 (DFG2) Advanced SELECT Prototyping Prototyping: group by clause Status: clause incomplete ◄─ , ────────────┐ ─ GROUP BY ─── groupingexpr ─┴─ GROUP BY Command ===> _____________________________________________________ Scroll PAGE F1=Help F2=Split F3=Exit F4=Deselect F5=InsRpt F6=Executed F7=Backward F8=Forward F9=Swap F10=PrvRpt F11=NxtRpt F12=Cancel
FM/Db2 は、パネル上の部分的に作成済みの SQL 文節の中に必須キーワード GROUP BY を表示することに注意してください。
GROUP BY 文節の構文は、次のものから構成されていることが分かります。- 必須キーワードの GROUP BY (画面には白色で表示されます)、
- 繰り返し項目 groupingexpr (画面には赤色で表示される)
- 繰り返し区切り文字としてのコンマ (,)
- カーソルを「groupingexpr」フラグメントに移動します。
- 「InsRpt」機能キー (F5) を押します。列名を入力できるポップアップ・パネルが表示されます。
- ポップアップ・パネルで「
SKILLTYPE
」を入力します。Process Options Utilities Help ─ ┌───────────────────────── Freeform Entry ─────────────────────────┐ ─────── F │ │ │ Enter a grouping expression to be inserted in the SQL: │ P │ SKILLTYPE_______________________________________________________ │ lete │ ________________________________________________________________ │ │ ________________________________________________________________ │ ─ │ ________________________________________________________________ │ │ ________________________________________________________________ │ │ Command ===> ______________________________________ Scroll PAGE │ │ F1=Help F2=Split F3=Exit F7=Backward F8=Forward │ │ F9=Swap F12=Cancel │ └──────────────────────────────────────────────────────────────────┘ GROUP BY Command ===> _____________________________________________________ Scroll PAGE F1=Help F2=Split F3=Exit F4=Deselect F5=InsRpt F6=Executed F7=Backward F8=Forward F9=Swap F10=PrvRpt F11=NxtRpt F12=Cancel
- 「Exit (終了)」機能キー (F3) を押します。列名 SKILLTYPE が GROUP BY 文節に追加されます。
Process Options Utilities Help ────────────────────────────────────────────────────────────────────────────── FM/Db2 (DFG2) Advanced SELECT Prototyping Prototyping: group by clause Status: clause complete ◄─ , ────────────┐ ─ GROUP BY ─── groupingexpr ─┴─ GROUP BY SKILLTYPE Command ===> _____________________________________________________ Scroll PAGE F1=Help F2=Split F3=Exit F4=Deselect F5=InsRpt F6=Executed F7=Backward F8=Forward F9=Swap F10=PrvRpt F11=NxtRpt F12=Cancel
この段階では、FM/Db2 は繰り返し区切り文字をステートメントに追加していないことに注意してください。1 つの繰り返し項目だけを指定している場合には、これが正しい構文です。ただし、FM/Db2 が (以下のステップのように) 複数の繰り返し項目を検出すると、繰り返し区切り文字を挿入します。
- ここで再び、カーソルを「groupingexpr」フラグメントに移動します。
- 「InsRpt」機能キー (F5) を押して、ポップアップ・パネルを表示します。
- ポップアップ・パネルで「
EMPGRADE
」を入力します。 - 「Exit (終了)」機能キー (F3) を押します。繰り返し区切り文字および列名 EMPGRADE が GROUP BY 文節に追加されます。
Process Options Utilities Help ────────────────────────────────────────────────────────────────────────────── FM/Db2 (DFG2) Advanced SELECT Prototyping Prototyping: group by clause Status: clause complete ◄─ , ────────────┐ ─ GROUP BY ─── groupingexpr ─┴─ GROUP BY SKILLTYPE , EMPGRADE Command ===> _____________________________________________________ Scroll PAGE F1=Help F2=Split F3=Exit F4=Deselect F5=InsRpt F6=Executed F7=Backward F8=Forward F9=Swap F10=PrvRpt F11=NxtRpt F12=Cancel
- STARTYEAR についてステップ 8 から 11 までを繰り返します。
Process Options Utilities Help ────────────────────────────────────────────────────────────────────────────── FM/Db2 (DFG2) Advanced SELECT Prototyping Prototyping: group by clause Status: clause complete ◄─ , ────────────┐ ─ GROUP BY ─── groupingexpr ─┴─ GROUP BY SKILLTYPE, EMPGRADE, STARTYEAR Command ===> _____________________________________________________ Scroll PAGE F1=Help F2=Split F3=Exit F4=Deselect F5=InsRpt F6=Executed F7=Backward F8=Forward F9=Swap F10=PrvRpt F11=NxtRpt F12=Cancel
パネルには、完了した GROUP BY 文節が表示されています。GROUP BY SKILLTYPE , EMPGRADE , STARTYEAR
注: フラグメント中に 1 つの繰り返し項目だけが必要であった場合には、カーソルを「groupingexpr」フラグメントに移動してから (ステップ 4)、「InsRpt」機能キー (F5) または Enter キーを押すことができます。
関連するタスク