共通テーブル式(CTE)-SQL Serverの共通テーブル式
- 12-09-2022
- Toanngo92
- 0 Comments
共通テーブル式(CTE)-共通テーブル式
CTEは、単一のSELECT、INSERT、UPDATE、DELETE、またはCREATEVIEWステートメントのスコープ内で定義された一時的な結果セットとして理解できます。 CTE CTEは、クエリで定義された名前付き式です。 CTEはクエリの開始時に定義され、外部クエリで複数回参照できます。
それ自体への参照を含むCTEは、再帰CTEと呼ばれます。
CTEの強みは、コマンドを読み取り、複雑なコマンドを簡単に保守する機能を開発することです。
構文:
WITH <CTE_Name> AS (<CTE_definition>)
たとえば、 Sales.SalesOrderHeaderテーブルに含まれる注文の年間顧客を取得して表示するには、次のようにします。
WITH CTE_OrderYear AS (SELECT YEAR(OrderDAte) AS OrderYear,CustomerID FROM Sales.SalesOrderHeader) SELECT OrderYear, COUNT(DISTINCT CustomerID) AS CustomerCount FROM CTE OrderYear GROUP BY OrderYear;
上記の例では、CTE_OrderYearがCTEの名前として指定されています。 WITH … ASキーワードはCTEの定義を開始し、次にCTEをSELECTステートメントで使用して、結果全体を取得して表示します。
WITH句で複数のCTEを一緒に定義できます。例えば:
WITH CTE_Students AS ( SELECT S.StudentCode, S.Name, C.CityName, St.Status FROM Student S) INNER JOIN City C ON S.CityCode = C.CityCode INNER JOIN Status St ON S.StatusId = St.StatusID), StatusRecord AS ( SELECT Status, COUNT(Name) AS CountofStudents FROM CTE_Students GROUP BY Status ) SELECT * FROM StatusRecord