CTE, Common Table Expression'ın kısaltmasıdır. Common Table Expression ise SELECT, INSERT, UPDATE ya da DELETE ifadeleri içerisinde başvurabileceğiniz geçici adlandırılmış sonuç kümesine verilen isimdir. CTE sorguları her zaman with ifadesi ile başlarlar, bu yüzden genellikle With CTE olarak anılırlar.
;WITH urunlerCTE (Item_ID, Item_Tarih, Item_Price, birim)
AS
(
SELECT id, tarih, fiyat, birim FROM tbl_urunler
)
Select top 10 * from urunlerCTE
Özyinelemeli CTE sorguları hazırlanabilir..
Declare @SatirNo int = 1;
;with SatirCTE as
(
SELECT @SatirNo as SatirNO
UNION ALL
SELECT SatirNo + 1
FROM SatirCTE
where SatirNO < 10
)
SELECT * FROM SatirCTE
Ya da aşağıdaki gibi özyinelemesiz sorgularda da kullanılabilirler.
;with SatirCTE(SatirNO) as
(
SELECT
ROW_NUMBER() OVER(ORDER BY ad ASC) AS SatirNO
FROM tbl_urunler
WHERE id <= 10
)
SELECT * FROM SatirCTE
Not: CTE ifadeleri Union ALL ile birlikte kulllanılabilirler.
Örnek: CTE içerisinde Select komutu ile hazırladığımız bir kümeyi aşağıdaki gibi Insert ederken kullanabiliriz.
;WITH urunlerCTE (Item_ID, Item_Tarih, Item_Price, birim)
AS
(
SELECT id, tarih, fiyat, birim FROM tbl_urunler where kategori=1
UNION ALL
SELECT id, tarih, fiyat, birim FROM tbl_urunler where kategori=3
)
Insert into tbl_urunGecmisi(id, tarih, fiyat, birim)
SELECT id, tarih, fiyat, birim from urunlerCTE Order by id
Editör editi: sitedeki bazı diğer benzer başlıklar için;
bkz: SQL Server While Kullanımı ve Örnekleri
bkz: SQL Server sp_help prosedürü nedir ve nasıl kullanılır?
bkz: SQL Server versiyonu SQL komutu yazarak nasıl görülebilir?
bkz: SQL Server'da bir tabloyu temizlemek
bkz: SQL Server'da tüm trigger'ları listelemek
bkz: SQL Server'da tablonun mevcut seed değerini görmek