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.