在SELECT 資料的時候動態的加上編號
ROW_NUMBER ()
參考資料來源 : topcat 姍舞之間的極度凝聚 、 ROW_NUMBER (Transact-SQL)
因為工作上報表的需求,所以找到的方法,用來抓前幾的資料很方便
ROW_NUMBER() 、 RANK() 、 DENSE_RANK()
PS. 要加上
OVER ( PARTITION BY AttributeName ORDER BY AttributeName )
但是PARTITION BY AttributeName 是Optional
ORDER BY AttributeName 是一定要的!
來幾個範例吧
1.從記錄全校分數的Table排名次
SELECT ROW_NUMBER() OVER(ORDER BY Scorce) AS Row ,* FROM Scorces
2. 當有相同名次的時候,名次會順延 。ex 有兩個第一名的時候,第三個人會變成第三名
SELECT RANK() OVER(ORDER BY Scorce) AS Row ,* FROM Scorces
3.有相同名次的時候,名次不順延。ex 有兩個第一名的時候,第三個人還是第二名
SELECT DENSE_RANK() OVER(ORDER BY CustomerID) AS Row ,* FROM Orders
4.我想要知道每個班級的排名,我不要全校的排名, 用班級做為切割
SELECT ROW_NUMBER() OVER( PARTITION BY Class ORDER BY Scorce) AS Row ,* FROM Scorces