--说明:
row_number() OVER (PARTITION BY COL1 ORDER BY COL2)
表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的).
--全表记录
select * from t1;
--对记录集合a.*做处理,处理方式:把a.*这个记录集,按id排序,并加上一列唯一标识
select a.*, row_number() over (order by a.id) from t1 a
--对id2进行处理,处理方式:把ID这一列值相同的,对应的ID2,进行求合
select id,id1,id2, sum(id2) OVER (PARTITION BY id) id2_sum from t1
--如果不需要按某列值分割求和,可以用null处理
select id,id1,id2, sum(id2) OVER (PARTITION BY null) id2_sum from t1
--对记录集合a.*按id分组,按id2降序,最后计算得到一个值来标识第一行
select a.*, row_number() over (partition by id order by a.id2 desc ) from t1 a
--特殊用法,可用来从两条相同记录中,任意取一条
select a.*,row_number() over (order by id) as xxx from t1 a where a.id1=1
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15720542/viewspace-619418/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/15720542/viewspace-619418/