İleri Seviye SQL: CTE ile Düzenli Satır Oluşturmak

Karcan Ozbal
2 min readMar 19, 2022

# SQL’de CTE ile Düzenli Satır Oluşturmak

Belli bir sayıda satır oluşturmamız gerekiyor. Standart bir WHILE döngüsü bu ihtiyacınızı karşılayacaktır, ancak bu işlemi CTE ile hem daha performanslı bir hale getirebilir, hem de SELECT ifadesi içinde SQL’in tüm sorgulama nimetlerinden yararlanarak zenginleştirebiliriz.

Peki, nedir bu CTE? : İleri Seviye SQL : CTE (Common Table Expressions)

Dipnot: CTE ile recursive işlemler çerçevesinde yaptığımız her sorgu “başlama noktasındaki satır sayısı” + “100 biriktirme satırı” ile sınırlıdır. Bu limit aşıldığında SQL hata verecektir. Varsayılan limiti kaldırmak için, sorgunun en sonuna “OPTION (MAXRECURSION 0)” ifadesini eklemek gerekmektedir.

# Belirli Sayıda Düzenli Satır Oluşturmak

110 adet düzenli satır oluşturmak istiyoruz. CTE ile nasıl bir sorgu hazırlanması gerekir?

Biraz sorgudan bahsetmem gerekirse;

UNION ALLdan önceki sorgu, başlama noktası olarak düşünebilir. Yani 1 değerine sahip olan ilk satırımız.

UNION ALLdan sonra ki sorgu ise, biriktirme noktası olarak düşünebilir. Yani ilk satırdan nasıl bir artış ile diğer satırların oluşacağı belirleniyor. Biriktirme noktasındaki WHERE koşulu ile bu işleme ne kadar devam edileceğini, yani kaç satır oluşacağını belirtiyoruz.

Sonuç ise aşağıda ki gibi olacaktır;

# Başlangıç ve Bitiş Sırasını Belirterek Satır Oluşturmak

50–100 arasında sıralı satır oluşturmamız gerekiyor. CTE ile nasıl bir sorgu hazırlanması gerekir?

Sonuç ise aşağıda ki gibi olacaktır;

Artık bu bilgiler ışığında kendi veri üretme ihtiyacınıza göre saatlik, günlük, haftalık, aylık ve yıllık gibi tarih verileri üretebilirsiniz.

# Kazanımlar

  • CTE’nin tek bir DML ifadesi süresince var olduğunu ve genellikle recursive işlemlerde kullanıldığını,
  • View, temp table ve table-value constructora benzediğini ve alanların deklare edilmemesi gerektiğini,
  • Birden fazla CTE ifadesi kullanılabildiğini,
  • Recursive işlemlerde satır limitinin olduğunu,
  • CTE’nin Recursive özelliğiyle, belirli bir periyodda düzenli satır üretebildiğini öğrenmiş olduk.

# Sosyal Medya Hesaplarım

Konu istekleri ve makale ile ilgili tartışmak için yoruma bekliyorum.

--

--