[SQL] SELECT 資料 動態加上編號

在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