MS SQL Row_Number

Ms-Sql’ de bir çıktı üretirken bir kolonuna bir satır numarası verme gereği hissedebilirsiniz, veya belli kriterlere göre verileri sıralayıp her birini satır numarasıyla belli etmek isteyebilirsiniz böyle durumlarda ms-sql’ de “Row_Number” komutu çok işinizi görecektir.

Temel bazda Row_Number aşağıdaki gibi yazılı;

“ROW_NUMBER ( )     OVER ( [ PARTITION BY value_expression , … [ n ] ] order_by_clause )”

Aşağıdaki kodu ve çıktısını bir inceleyelim;

SELECT ROW_NUMBER() OVER(ORDER BY SalesYTD DESC) AS 'Row',
    FirstName, LastName, ROUND(SalesYTD,2,1)
FROM Sales.vSalesPerson
WHERE TerritoryName IS NOT NULL AND SalesYTD <> 0

Yukarıdaki çıktı incelendiğinde sorguda yer alan “SalesYTD” alanına göre bir dizilim yapılmış ve sıralama yapılmıştır. “Row_Number” ın bir kullanım şekli daha mevcuttur. Bunu açıklaması biraz karmaşık ama kod ve çıktısını inceleyerek  daha rahat anlayabileceğimizi düşünüyorum.

SELECT FirstName, LastName, TerritoryName, ROUND(SalesYTD,2,1),
ROW_NUMBER() OVER(PARTITION BY TerritoryName ORDER BY SalesYTD DESC) AS 'Row'
FROM Sales.vSalesPerson
WHERE TerritoryName IS NOT NULL AND SalesYTD <> 0
ORDER BY TerritoryName

Çıktıyı incelediğinizde “SalesYTD” alanına göre bir sıralama yapılırken “TerritoryName” alanına görede bir guruplama yapılmaya çalışılmış ve “Row” alanındaki veri bu gruplamaya göre verilmiştir.

Etiket(ler): , .Yer işareti koy Kalıcı Bağlantı.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir