WITH yapısı, T-SQL’de Common Table Expression (CTE) olarak bilinen ve geçici sonuç kümesi tanımlamak için kullanılan bir yapıdır. CTE’ler sorgu içinde geçici olarak kullanılır ve sorgu tamamlandıktan sonra bellekten silinir. Kompleks olan sorguların daha okunabilir hale getirmek için kullanılmaktadır. Bu ifade anlık olarak yapılmalıdır. Veritabanı ayrı bir tablo veya başka bir ifade oluşmamaktadır.
Aynı işlemi view kullanarak da gerçekleştirebilirsiniz. Eğer uygulamanız bu kod bloğunu sürekli kullanacaksa view oluşturmak daha mantıklıdır. Ama uygulamanın sürekli kullanacağı bir kod bloğu değilse view yerine CTE’yi tercih edebiliriz. CTE’de sadece SELECT ifadesi değil INSERT,UPDATE ve DELETE’lerde kullanılabilir. CTE’lerin içinde ORDER BY(Sorguda TOP ifadesi varsa kullanılabilir),INTO,FOR BROWSE ve OPTION kullanılamaz.
Temel Komut:
WITH CTE_Adı (Sütun1, Sütun2, ...)
AS
(
-- CTE'nin tanımlandığı sorgu
SELECT Sütun1, Sütun2, ...
FROM Tablo
WHERE Koşul
)
-- CTE'yi kullanan ana sorgu
SELECT * FROM CTE_Adı;
Sorguda çekilecek kolon kadar CTE yapısında değişken tanımlanmaktadır.
Aşağıdaki komut ile join yapısında aldığı kolonları Common Table Expressions değişkenlerini almaktadır.
with CTE(id,satid,adi,soyad)
AS
(
select p.PersonelID, s.SatisID, Adi,SoyAdi from Personeller p join Satislar s on s.PersonelID=p.PersonelID
)
select*from CTE
Yukarıdaki komutumuzdaki CTE kolonumuzu çalıştırdıktan sonra join işlemlerinde kullanılmaktadır.
with CTE(id,satid,adi,soyad)
AS
(
select p.PersonelID, s.SatisID, Adi,SoyAdi from Personeller p join Satislar s on s.PersonelID=p.PersonelID
)
select*from CTE c join [Satis Detaylari] s on s.SatisID=c.satid

CTE’ler yalnızca tanımlandıkları sorgu içinde geçerlidir. Bir sorguda birden çok CTE tanımlanabilir, virgülle ayrılır. CTE’ler view, stored procedure veya fonksiyonlarda kullanılabilir.
İki cte’yi birleştirirken UNION ALL, UNION, INTERSECT, veya EXCEPT ifadelerinden birini kullanmanız gerekir.
WITH yapısı, özellikle karmaşık sorguları basitleştirmede ve hiyerarşik verilerle çalışmada oldukça kullanışlıdır.
Başka bir makalede görüşmek dileğiyle..
“Ey İnananlar! Sabredin, düşmanlarınızdan daha sabırlı olun, cihada hazır bulunun, Allah’a karşı gelmekten sakının ki başarıya erişebilesiniz.”Âl-i İmran Suresi-200