reeder2-160x600-fil

Dost siteler

KİTAP OKU

http://www.kitapoku.info

NUREFSAN.NET
http://www.nurefsan.net

DUALAR.INFO DİNİ İÇERİK
http://dualar.info

YEMEKTARİFLERİ
http://www.yemektariflerim.eu

Ukrayna'da Eğitim
http://www.egitim.com.ua

KİTAP ÖZETLERİ

http://www.kitapozeti.org

19 ziyaretçi ve Sıfır kullanıcı çevrimiçi

ROW_NUMBER() Fonksiyonu

Row_Number() fonksiyonu , OLAP (Online Analytical Processing) fonksiyonlarindan en çok kullanilanlardan bitanesi. MSSQL Analysis Service'te DMX sorgulariyla kullanilan bu yapiya ait bir kaç fonksiyonuda T-SQL ile kullanabiyoruz. Görevi aslinda çok basit,sorgu sonucuda gelen kayitlariniza sira numarasi vermeye ve bölümlemeye yarar. Fakat bu küçük özellik bazen çok isinize yariyabilir.
 
Örnegin;
Asagidaki script’i  SQL’serverinizda çalistirin ve örnekte kullanacagimiz tabloyu olusturalim.
 

CREATE TABLE [dbo].[urunler](

      [id] [numeric](18, 0) IDENTITY(1,1) NOT NULL,

      [urun] [varchar](50) NULL, 

      [sgiris] [smalldatetime] NULL

)
 
Asagidaki sekildede verilerimizi girelim.
 

 
Ufak bir örnek yaparak Row_Number() fonksiyonunu nasil çalistigina bakalim.
 
SELECT ROW_NUMBER() OVER(ORDER BY urun) AS sira,* FROM urunler
 

 
Test ettiginizde urunler tablonuzun urun kolonuna göre sirali ver her satir için bir sira numarasi verdigini göreceksiniz. Burada bilmeniz gereken Row_Number() fonksiyonu OVER ifadesiyle çalisir ve tablonuzu hangi kolon yada kolonlara göre nasil siralanacagini belirtmeniz gerekir.
 
Bir baska örnek;
 
SELECT ROW_NUMBER() OVER(ORDER BY sgiris desc) AS sira,urun,sgiris FROM urunler
Burada ise tabloyu sgiris kolonuna göre siraladik ve bu düzene göre Row_Number() fonksiyonu sira numarasi verdi.
 
Örnegin Ürün stogumuza sondan 3. olarak giren ürünün ismini bulmak istersek,Row_Number() fonksiyonu ile bunu kolaylikla yapabiliriz.
 
 

SELECT urun from
(SELECT ROW_NUMBER() OVER(ORDER BY sgiris desc) AS sira,urun,sgiris FROM urunler) AS t WHERE sira=3

 
Row_Number() fonksiyonunu bir baska kullanimi iste partition by ifadesi iledir. Partition by ile ayni olan degerleri gruplayarak kendi içlerinde sira numaralari verebilirsiniz.
 
Örnegin;

SELECT ROW_NUMBER() OVER(partition BY urun ORDER BY urun) AS sira,*

FROM urunler ORDER BY urun
 
Sorgu sonucu asagidaki sekilde olacaktir.