Seperti yang ditunjukkan dalam Menggunakan Common Table Expressions pada MSDN, Anda dapat mendefinisikan CTE sebagai:
WITH expression_name [ ( column_name [,...n] ) ]
AS
( CTE_query_definition )
dan gunakan seperti:
SELECT <column_list> FROM expression_name;
Katakanlah saya sudah mengikuti 2 CTE
with cte1 as(
select name from Table1
)
with cte2(name) as(
select name from Table1
)
Kueri menampilkan hasil yang sama untuk kedua CTE karena kueri dalam sama. Satu-satunya perbedaan antara keduanya adalah bahwa cte2 memiliki nama kolom ( (name)
) yang didefinisikan dalam deklarasi.
Ketika saya menjalankan kedua CTE, saya tidak melihat perbedaan dalam rencana eksekusi.
Saya hanya ingin tahu:
- Apa bedanya jika saya tidak menentukan nama kolom dalam definisi CTE?
- Mengapa saya harus / tidak menentukan nama kolom saat membuat CTE?
- Apakah ini memengaruhi rencana eksekusi permintaan? (Sejauh yang saya lihat, tidak ada bedanya.)