17.05 - WITH句 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ操作言語

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
Release Date
2021年1月
Content Type
プログラミング リファレンス
Publication ID
B035-1146-175K-JPN
Language
日本語 (日本)

サマリー行と選択された結果を返す方法を決めるブレーク(グループ化の条件とも呼ばれる)を指定します。

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句をSELECT文で指定して、異なる種類のサマリーを指定することができます。連続する各WITH句は、レベル別の行のグループ化を以下のとおりに示します。
  • 最初のWITH句のBY節は、最下位のソート キーを定義します。
  • 次のWITH句のBY節は、下から2番目のソート キーを定義します。
  • 最後のWITH句は、メジャー ソート キーを定義します。

    WITH句の例を参照してください。

ORDER BY句およびWITH句

ORDER BY句は、WITH句の前後に指定することができます。ORDER BY句も参照してください。
同じSELECT文に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の式リスト内に指定する必要はありません。

以下の式をWITH句で指定できます。
  • 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句の例を参照してください。