概要:このチュートリアルでは、WITH
句を使用して、SQL Serverでの共通テーブル式またはCTE
SQL ServerでのCTEの概要
CTEは共通テーブル式の略です。 CTEを使用すると、SELECT
、INSERT
、UPDATE
、DELETE
、MERGE
などのステートメントの実行スコープで一時的に使用できる一時的な名前付き結果セットを定義できます。,
SQL ServerのCTEの一般的な構文を次に示します。
Code language: SQL (Structured Query Language) (sql)
この構文では、
- まず、式名(
expression_name
)を指定します。 - 次に、expression_nameの後にカンマ区切りの列のリストを指定します。 列の数は、
CTE_definition
で定義されている列の数と同じでなければなりません。 - 次に、列リストが指定されている場合は、式名または列リストの後にASキーワードを使用します。,
- その後、結果セットが共通テーブル式を設定する
SELECT
ステートメントを定義します。 - 最後に、
SQL_statement
、SELECT
、INSERT
、UPDATE
、DELETE
、またはMERGE
を参照してください
。
共通テーブル式は読みやすいため、サブクエリを使用するのではなく、共通テーブル式を使用することをお勧めします。, また、分析関数(またはウィンドウ関数)を含むクエリでCTEを使用します
SQL Server CTEの例
共通テーブル式を使用する例をいくつか見てみましょう。
A)単純なSQL Server CTEの例
このクエリでは、CTEを使用して2018年の営業スタッフの売上金額を返します。
次の図は結果セットを示しています。
この例では、
- まず、共通テーブル式の名前として
cte_sales_amounts
を定義しました。, CTEは、定義クエリから派生したstaff
、year
、およびsales
の三つの列で構成される結果を返します。次に、orders
、order_items
およびstaffs
テーブルのデータをクエリすることによって、営業スタッフと年ごとの合計販売金額を返すクエリを構築しました。 - 第三に、外部クエリでCTEを参照し、2018年の行のみを選択します。,
この例では、実証的にきつかの共通テーブル表現。 CTEを使用せずに結果を達成するためのより最適な方法があります。
B)共通テーブル式を使用して、カウントに基づいてレポートの平均を作成します
この例では、CTEを使用して、すべての営業スタッフの2018年の
出力は次のとおりです。
Code language: SQL (Structured Query Language) (sql)
この例では、
まず、共通テーブル式の名前としてcte_sales
を使用しました。, CTEの列リストをスキップして、cte定義ステートメントから派生したものにしました。 この例では、staff_id
およびorder_count
列が含まれています。
次に、次のクエリを使用して、共通テーブル式cte_sales
を設定する結果セットを定義します。 このクエリは、営業スタッフによる2018年の注文数を返します。
第三に、外側のステートメントでcte_sales
を参照し、AVG()
関数を使用して、すべてのスタッフの平均販売注文を取得します。,
Code language: SQL (Structured Query Language) (sql)
C)単一のクエリの例で複数のSQL Server CTEを使用する
次の例では、二つのCTEcte_category_counts
とcte_category_sales
を使用して、各製品カテゴリの製品 外部クエリは、category_id
列を使用して二つのCteを結合します。,
結果セットは次のとおりです。
このチュートリアルでは、sql Serverで共通テーブル式またはCTEを使用して、複雑なクエリをわかりやすく