SQL Server 2008 CTE(共通テーブル式)の使い方
CTE(Common Table Expression)は、SQL99規格に準拠した機能で、SQL Server 2005 からサポートされました。
一時テーブルやテーブル変数と同じように SELECT ステートメントの結果に対して名前を付けて保存することができます。
使い方は次のとおりです。
WITH 式名 [(列名1, 列名2, ...)] AS ( SELECT ステートメント)
CTE を利用すると次のような再帰クエリで利用することができます。
-- 再帰クエリの例 WITH cte1 (社員番号, 社員名, 上司社員番号, 階層) AS ( -- 上司 SELECT 社員番号, 社員名, 上司社員番号, 0 FROM 社員 WHERE 社員番号 = 1001 UNION ALL -- 部下(再帰クエリ) SELECT e.社員番号, e.社員名, e.上司社員番号, cte1.階層 + 1 FROM 社員 AS e INNER JOIN cte1 ON e.上司社員番号 = cte1.社員番号 ) SELECT * FROM cte1