3
WITH CTEとWITH CTE(<column_names>)の違いは何ですか?
MSDNの共通テーブル式の使用に示すように、CTEを次のように定義できます。 WITH expression_name [ ( column_name [,...n] ) ] AS ( CTE_query_definition ) そしてそれを次のように使用します: SELECT <column_list> FROM expression_name; 次の2つのCTEがあるとします with cte1 as( select name from Table1 ) with cte2(name) as( select name from Table1 ) クエリは、内部クエリが同じであるため、両方のCTEに対して同じ結果を出力します。これら2つの違いは、cte2の(name)宣言で列名()が定義されていることだけです。 両方のCTEを実行しても、実行計画に違いはありません。 私は知りたいだけです: CTE定義で列名を指定しない場合、どのような違いがありますか? CTEの作成時に列名を指定する必要がある/すべきではないのはなぜですか? 万が一クエリ実行プランに影響はありますか?(私が見た限りでは、何の違いもありません。)