リリース情報


|43.13 副選択内の ORDER BY

|DB2 は、副選択および全選択の ORDER BY をサポートするようになりました。

|43.13.1 全選択

|以下に、order-by-clause の位置を示す、変更後の全選択の構文図の一部を示します。

|>>-+-subselect---------+---------------------------------------->
|   +-(fullselect)------+
|   '-| values-clause |-'
| 
|   .----------------------------------------------.
|   V                                              |
|>----+------------------------------------------+-+------------->
|     '-+-UNION---------+--+-subselect---------+-'
|       +-UNION ALL-----+  +-(fullselect)------+
|       +-EXCEPT--------+  '-| values-clause |-'
|       +-EXCEPT ALL----+
|       +-INTERSECT-----+
|       '-INTERSECT ALL-'
| 
|>--+-----------------+-----------------------------------------><
|   '-order-by-clause-'
| 
| 

|ORDER BY 文節を含む全選択は、以下では指定できません。 |

|全選択内の ORDER BY 文節は、照会から戻される行の順序には |影響しません。ORDER BY 文節は、最外部全選択で指定された場合のみ、 |戻された行の順序に影響します。

|43.13.2 副選択

|以下に、order-by-clause の位置を示す、 |変更後の副選択の完全な構文図を示します。

|>>-select-clause--from-clause--+--------------+----------------->
|                               '-where-clause-'
| 
|>--+-----------------+--+---------------+----------------------->
|   '-group-by-clause-'  '-having-clause-'
| 
|>--+-----------------+-----------------------------------------><
|   '-order-by-clause-'
| 
| 

|副選択の文節は、以下の順序で処理されます。 |

  1. |FROM 文節
  2. |WHERE 文節
  3. |GROUP BY 文節
  4. |HAVING 文節
  5. |SELECT 文節
  6. |ORDER BY 文節 |

|ORDER BY 文節を含む副選択は、以下では指定できません。 |

|例えば、以下の構文は無効です (SQLSTATE 428FJ SQLCODE -20211)。

|SELECT * FROM T1
|   ORDER BY C1
|UNION
|SELECT * FROM T2
|   ORDER BY C1

|以下の例が有効 |です。

|(SELECT * FROM T1
|   ORDER BY C1)
|UNION
|(SELECT * FROM T2
|   ORDER BY C1)

|副選択内の ORDER BY 文節は、照会から戻される行の順序には |影響しません。ORDER BY 文節は、最外部全選択で指定された場合のみ、 |戻された行の順序に影響します。

|43.13.3 order-by-clause

|以下に、変更後の order-by-clause の完全な構文図を示します。

|             .-,------------------------------.
|             V             .-ASC--.           |
|>>-ORDER BY----+-sort-key--+------+---------+-+----------------><
|               |           '-DESC-'         |
|               '-ORDER OF--table-designator-'
| 
|sort-key
| 
||--+-simple-column-name--+--------------------------------------|
|   +-simple-integer------+
|   '-sort-key-expression-'
| 
| 
|

|ORDER OF table-designator
|table-designator で使用されているのと同じ配列が |副選択の結果表に適用されることを指定します。この文節を指定する副選択の FROM 文節に、 |table-designator と一致する表参照がなければなりません |(SQLSTATE 42703)。指定されている table-designator に対応する |副選択 (または全選択) は、データに従属する ORDER BY 文節を含む必要があります |(SQLSTATE 428FI SQLCODE -20210)。ネストされた副選択 (または全選択) |の ORDER BY 文節の列が外部の副選択 (または全選択) に組み込まれ、またこれらの列が ORDER OF 文節の代わりに |指定されたかのように、同じ配列が適用されます。 |表指定子に関する詳細は、「SQL 解説書」の『あいまいさを避けるための列名修飾子』を参照してください。

|このフォームは、全選択では使用できないことに注意してください |(全選択の古いフォームを除く)。 |例えば、以下の例は無効です。

|(SELECT C1 FROM T1
|   ORDER BY C1)
|UNION
|SELECT C1 FROM T2
|   ORDER BY ORDER OF T1

|以下の例が有効 |です。

|SELECT C1 FROM
|   (SELECT C1 FROM T1
|      UNION
|    SELECT C1 FROM T2
|    ORDER BY C1 ) AS UTABLE
|ORDER BY ORDER OF UTABLE
|

|43.13.4 select-statement

|以下に、変更後の select-statement の完全な構文図を示します。

|>>-+-----------------------------------+--fullselect------------>
|   |       .-,-----------------------. |
|   |       V                         | |
|   '-WITH----common-table-expression-+-'
| 
|>--fetch-first-clause--*--+--------------------+---------------->
|                          +-read-only-clause---+
|                          |               (1)  |
|                          '-update-clause------'
| 
|>--*--+---------------------+--*--+--------------+-------------><
|      '-optimize-for-clause-'     '-WITH--+-RR-+-'
|                                          +-RS-+
|                                          +-CS-+
|                                          '-UR-'
| 
| 

|注:

  1. |全選択に order-by-clause が含まれる場合は、 |update-clause を指定することはできません。 |

|SELECT INTO ステートメント

|構文

|                        .-,-------------.
|                        V               |
|>>-select-clause--INTO----host-variable-+--from-clause---------->
| 
|>--+--------------+--+-----------------+--+---------------+----->
|   '-where-clause-'  '-group-by-clause-'  '-having-clause-'
| 
|>--+-----------------+--+--------------+-----------------------><
|   '-order-by-clause-'  '-WITH--+-RR-+-'
|                                +-RS-+
|                                +-CS-+
|                                '-UR-'
| 
| 

|43.13.5 OLAP 関数 (window-order-clause)

|以下に、変更後の window-order-clause を示す、OLAP 関数の構文図の一部を示します。

|window-order-clause
| 
|             .-,--------------------------------------------.
|             V                        .-| asc option |--.   |
||--ORDER BY----+-sort-key-expression--+-----------------+-+-+---|
|               |                      '-| desc option |-' |
|               '-ORDER OF--table-designator---------------'
| 
|asc option
| 
|        .-NULLS LAST--.
||--ASC--+-------------+-----------------------------------------|
|        '-NULLS FIRST-'
| 
|desc option
| 
|         .-NULLS FIRST-.
||--DESC--+-------------+----------------------------------------|
|         '-NULLS LAST--'
| 
| 
|

|ORDER BY (sort-key-expression,...)
|区画内の行の配列を定義し、OLAP 関数の値を決定したり、あるいは |window-aggregation-group-clause の ROW 値の意味を判別したりします |(照会結果セットの配列は定義されません)。

|sort-key-expression
|ウィンドウ区画内の行の配列の定義に使用される式です。 |sort-key-expression 内で参照される各列名は、OLAP 関数を含み、 |副選択の結果セットの列を明確に参照するものでなければなりません |(SQLSTATE 42702 または 42703)。各 sort-key-expression の長さは、 |255 バイトを超えてはなりません (SQLSTATE 42907)。sort-key-expression は、 |スカラー全選択を組み込むことはできません (SQLSTATE 42822)。 |また、可変の関数、あるいは外部処理を伴う関数を組み込むことは |できません (SQLSTATE 42845)。この文節は、RANK および DENSE_RANK 関数で |必要です (SQLSTATE 42601)。

|ASC
|sort-key-expression の値を昇順にします。

|DESC
|sort-key-expression の値を降順にします。

|NULLS FIRST
|ウィンドウ配列において、ソート順序は、すべての非 NULL 値の 前に NULL 値が置かれます。

|NULLS LAST
|ウィンドウ配列において、ソート順序は、すべての非 NULL 値の 後に NULL 値が置かれます。

|ORDER OF table-designator
|table-designator で使用されているのと同じ配列が |副選択の結果表に適用されることを指定します。この文節を指定する副選択の FROM 文節に、 |table-designator と一致する表参照がなければなりません |(SQLSTATE 42703)。指定されている table-designator に対応する |副選択 (または全選択) は、データに従属する ORDER BY 文節を含む必要があります |(SQLSTATE 428FI SQLCODE -20210)。ネストされた副選択 (または全選択) |の ORDER BY 文節の列が外部の副選択 (または全選択) に組み込まれ、またこれらの列が ORDER OF 文節の代わりに |指定されたかのように、同じ配列が適用されます。 |表指定子に関する詳細は、「SQL 解説書」の『あいまいさを避けるための列名修飾子』を参照してください。 |


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]