SQL ROW_NUMBER() OVER函数的基本用法用法

语法:

ROW_NUMBER() OVER(PARTITION BY GroupingColumnName ORDER BY WithinGroupOrderbyColumnName)

按GroupingColumnName分组后,在组内按照指定(或默认)的排序规则生成行号。

 

e.g

SELECT * FROM GreekGod

ID          FullName             Gender
----------- -------------------- ----------
1           Apollo               MALE
2           Hera                 FEMALE
3           Zeus                 MALE
4           Venus                FEMALE

 

SELECT *,ROW_NUMBER() OVER(PARTITION BY Gender ORDER BY FullName DESC) ROWNUM FROM GreekGod

ID          FullName             Gender     ROWNUM
----------- -------------------- ---------- --------------------
4           Venus                FEMALE     1
2           Hera                 FEMALE     2
3           Zeus                 MALE       1
1           Apollo               MALE       2

 

SELECT * FROM
(SELECT *,ROW_NUMBER() OVER(PARTITION BY Gender ORDER BY FullName DESC) ROWNUM FROM GreekGod) TResult
WHERE ROWNUM=1

ID          FullName             Gender     ROWNUM
----------- -------------------- ---------- --------------------
4           Venus                FEMALE     1
3           Zeus                 MALE       1



posted @ 2015-01-07 16:31  wsion  阅读(409)  评论(0编辑  收藏  举报