質問: Microsoft SQL Server 2012を使用しています。 良いクエリ式が書けず、困っているため、ご協力いただきたいです。 以下のようなテーブルがあるとします。 ID列とParentID列が親子関係を示しており、ツリーを形成しています。 ツリーのルートに当たるものはParentIDがNULLです。 各IDにはParameterIDを持っています。 ![画像の説明をここに入力](https://i.stack.imgur.com/F2hzh.png) このようなテーブル構造を前提に次のようなSELECT文を取得したいです。 * 自身が親なら自身のParameterIDのみ取得 * 自身が子ならば自身と親のParameterIDを取得 * 自身が孫ならば自身と親とそのまた親のParameterIDを取得 ... ![画像の説明をここに入力](https://i.stack.imgur.com/vhzku.png) このような結果を取得するためのクエリをどのように記載すればよいか ご協力いただきたいです。
回答: 再帰共通テーブル式を使ってこんな感じですかね。 ``` WITH CTE AS ( SELECT ID, ParameterID FROM T UNION ALL SELECT T.ID, CTE.ParameterID FROM T INNER JOIN CTE ON T.ParentID=CTE.ID ) SELECT DISTINCT ID, ParameterID FROM CTE ORDER BY ID; ```