目的
SELECTリストの式は、結果セットのソート方法を指定します。この句を使用していない場合、結果行は整列されずに返されます。
構文要素
- ORDER BY
- 結果行をソートする順序。
- expession、column_name、column_name_aliasまたはcolumn_positionについて1つ以上の列を指定できます。
- 指定した最初の整列列によって、最初の整列に使用される列が決定されます。その他の指定した整列列によって、指定した列の順序に基づいて後続の整列が決定されます。
- 複数の整列列を指定した場合、前の整列列(複数の場合もある)について同じ値を持つ行が整列されます。
- ソート列は、昇順または降順にソートするように指定できます。
- expression
- 行をソートするSQL式。式は、式リストの式の位置を名前や定数で指定できます。
- ソート フィールドが文字列である場合、ORDER BY句で使用されるexpessionには、ソートをCASESPECIFICまたはNOT CASESPECIFICのどちらかに指定するタイプ修飾子を含めることができます。
- スカラー サブクエリーやスカラーUDFを指定することは可能ですが、ORDER BY式リストにBLOB、CLOB、ARRAY、またはVARRAYデータ型を持つ列を参照することはできません。
- column_name
- 行を整列する列の名前。順序付きの列は、SELECT式リストの一部として指定される必要はありません。
- 指定できる最大の列数は64です。
- column_name_aliasではなくcolumn_nameを指定できます(詳細はcolumn_name_alias要素の説明を参照)。column_name_aliasは、テーブル定義の物理的な列と同じ名前であってはなりません。同じ名前である場合、column_positionではなく、column_name_aliasを指定する必要があります。例: 列名の別名の順序付けを参照してください。
- 指定する列にBLOB、CLOB、ARRAY、VARRAYデータ型を持つことはできません。
- column_name_alias
- 問合わせのSELECT式リストに指定されている列名の別名。この列で、結果の行がソートされます。
- column_name_aliasを指定する場合、その列が選択リストで指定されているかどうかにかかわらず、その列の別名を問合わせのFROM句で参照されているテーブルに定義されている列の名前と同じ名前にすることはできません。システムは、ユーザーが指定する列の別名よりも、基礎となる物理的な列の名前を優先して参照します。
- 適正でないcolumn_name_aliasを指定すると、システムはエラーを返します。
- この現象を回避するには、問合わせの選択リスト内で、SORT列をそのcolumn_position値で指定します。列参照およびORDER BYを参照してください。
- column_position
- ソートする選択式リストで指定された列または式の位置。
- 指定する値は、1から選択リストで指定した列数まで(最大列数を含む)の正定数の整数リテラルでなければなりません。Teradata Databaseでは、マクロとプロシージャのパラメータを式として扱い、列位置の指定としては扱わないので注意してください。
- 選択リストで指定されたcolumn_name_aliasが、FROM句で指定された基本テーブルの物理的な列と同じ名前であった場合、そのcolumn_name_aliasをソート値として指定することはできません。列位置の参照を選択リストの列または式の順序に指定できます。しかし、テーブル定義で指定された他の列と同じ名前のcolumn_name_aliasは使用できません。問合わせがうまく行かない場合にcolumn_positionでcolumn_name_aliasを置き換えることは、良い方法ではないため推奨されません。ただし、特別な状況では、最後の手段としてこの方法を使用することも可能です。
- 選択リスト内で位置によって参照される列または式には、BLOBデータ型またはCLOBデータ型のいずれも使用できません。
- これは、ANSI SQL:2011規格に対するTeradata拡張機能です。
- ASC
- 結果が昇順でソートされます。
- ソート フィールドが文字列の場合、システムは現在のセッションの照合順序の定義に従って、昇順で整列します。
- デフォルトの順序はASCです。
- DESC
- 結果が降順でソートされます。
- ソート フィールドが文字列の場合、システムは現在のセッションの照合順序の定義に従って、降順でソートします。
- NULLS FIRST
- NULL結果が最初にリストされることを指定します。
- NULLS LAST
- NULL結果が最後にリストされることを指定します。
ANSI準拠
ORDER BY句は、ANSI SQL:2011に準拠しており、さらに機能が拡張されています。更新可能カーソルの定義でのORDER BYの仕様は、ANSI SQL:2011に準拠しています。
ORDER BY句における整列引数としてのexpressionの仕様は、ANSI SQL:2011規格に対するTeradata拡張機能です。