サマリー行と選択された結果を返す方法を決めるブレーク(グループ化の条件とも呼ばれる)を指定します。
WITH句の一般的な用途は小計です。
WITH句とWITH文修飾子は機能が異なります。WITH修飾子を参照してください。
ANSI準拠
WITH句は、ANSI SQL:2011規格に対するTeradata拡張機能です。
UDT列およびWITH句
WITH句にUDT列を含めることはできません。
WITH … BY句のBY指定内のスカラー サブクエリー
問合わせに含まれるWITH ... BY句のBY指定に、列式またはパラメータ化された値として、スカラー サブクエリーを指定することができます。
WITH句の引数としてスカラーsubqueryを指定することはできません。これは、集約式のみがWITH句の引数として有効なためです。ただし、スカラーsubqueryを集約式の引数としてWITH句に指定することはできます。
LOB列およびWITH句
WITH句にLOB列を含めることはできません。
TOP演算子およびWITH文修飾子
TOP n演算子を指定したSELECT文に、WITH文修飾子を指定することはできません。
SELECT文内の複数のWITH句
- 最初のWITH句のBY節は、最下位のソート キーを定義します。
- 次のWITH句のBY節は、下から2番目のソート キーを定義します。
- 最後のWITH句は、メジャー ソート キーを定義します。
WITH句の例を参照してください。
ORDER BY句およびWITH句
ORDER BY句は、WITH句の前後に指定することができます。ORDER BY句も参照してください。- WITH句は、メジャー ソート キーを定義します。
- ORDER BY句は、マイナー ソート キーを定義します。
このことは、問合わせの構造、またはWITH句の数にかかわらず適用されます。
WITH句の例を参照してください。
SELECT文内のWITH句とGROUP BY句
WITH句とGROUP BY句をSELECT文内で組み合わせることはできません。同じSELECT文にWITH句とGROUP BY句とを指定すると、意図しない結果になることがあります。
WITH句の例を参照してください。
GROUP BY句も参照してください。
式およびWITH句
指定するexpression_2で、サマリー行が生成される場所が決まります。例えば、BY dept_noは、dept_no列の各値に対してサマリーを生成することを示します。サマリー行は、部門番号の各値が列挙された後に続けて生成されます。BY句を指定しない場合、サマリー行は、SELECTの式リストによって指定された全体の結果に適用されます。
ORDER BY句と同じように、expression_2で指定したすべての式の値は、昇順または降順でソートできます。たとえば、次のようになります。
WITH SUM(salary) BY divno ASC, dept_no DESC
同様に、expression_2には、SELECTの式リスト内の位置によって式を参照する定数を指定することもできます。たとえば、次のようになります。
WITH SUM(salary) BY 2 ASC, 3 DESC
ただし、expression_1またはexpression_2で指定する式を、SELECTの式リスト内に指定する必要はありません。
- SUM、AVERAGE、COUNT、MIN、またはMAXなどの集約演算子によって操作される式。
集約演算子は、その演算子が適用される各列の直前に、例えばWITH SUM(salary)またはMAX(yrsexp)のように指定しなければなりません。
- BY句に入っている列値に関連する式。例えば、WITH dept_no, SUM(salary) BY dept_no。
WITH句にLOBまたはUDT列が入っている式を指定することはできません。
TITLE句およびWITH句
TITLE句を使用して、expression_1およびSELECTの式リストに載っている任意の有効な式の表題を指定することができます。TITLE節は括弧で囲み、それを適用する式の後に続けなければなりません。表題は、FieldModeでの出力を行なうレポート生成にのみ適切であり、通常は、BTEQを通じてのみ実行されます。
次の句では、Subtotalという表題が各サマリー行に指定されます。
WITH SUM(salary)(TITLE 'Subtotal')
次の句では、空白の表題が指定されています。
WITH SUM(salary)(TITLE ' ')
WITH句の例を参照してください。