7 Nisan 2011 Perşembe

SQL ROW NUMBER Fonksiyonu

Seçilen bir kolon bazında, 1’den başlayıp 1’er artarak sıralı bir şekilde devam eden yeni bir kolon üretir. Genelde sıralı gitmeyen ID’lere sahip ürünler içerisinde sorgular yapmak için kullanırız.

AdventureWorks veritabanında, Production.Product tablosundaki ilk 10 ürün arasından  3-10 arası ürünleri elde etmek isteyelim. Yani ilk 10 ürün içerisindeki 3,4,5,6,7,8,9 ve 10. sıradaki ürünleri ekranda görmek istiyoruz. Burada ProductID’lerine göre istediğimiz sırayı elde edemeyiz. Çünkü ID’ler sıralı olarak gitmiyor. Dolayısı ile ROW_NUMBER kullanarak sıralı ve düzgün artan yeni bir kolon üretip, bu kolon üzerinden sonuç almaya çalışalım.

WITH SiraliUrunler AS

(

      SELECT ROW_NUMBER() OVER (ORDER BY ProductID) [Row], * FROM Production.Product

)

SELECT * FROM SiraliUrunler

WHERE Row BETWEEN 3 AND 10

‘Row’ adı ile oluşturduğumuz kolon 1den başlayarak satır sayısı kadar rakamlardan oluşan ve 1’er artarak devam eden bir kolondur. Ekran çıktımız şu şekilde olur.

Untitled

 



2 yorum:

Levent KAYA dedi ki...

Onur Bey, Elinize sağlık. bu bilgiyi kullanarak 2 kere sıralı urunler tablosunu farklı where koşullarıyla UNION yapıp tek bir tablo oluşturdum.
Başarılar... İyi çalışmalar.

Levent

Onur Salkaya dedi ki...

Teşekkür ediyorum, işinize yaramasına sevindim.
Başarılar dilerim...

Yorum Gönder