日期:2014-05-17  浏览次数:20792 次

用partition by 分组后怎么显示组内序号,
比如按key1分组后后,同一个key1的记录有5条,第1条显示1,第1条显示2....

------解决方案--------------------
SQL> select A.akey1,
2 A.afield1,
3 A.afield2,
4 row_number() over(partition by A.akey1 order by A.akey1) rn
5 from (select 1 as akey1, 'aaa ' as afield1, '111a ' as afield2 from dual
6 union all
7 select 1 as akey1, 'bbb ' as afield1, '111b ' as afield2 from dual
8 union all
9 select 1 as akey1, 'ccc ' as afield1, '111c ' as afield2 from dual
10 union all
11 select 2 as akey1, 'ddd ' as afield1, '111d ' as afield2 from dual
12 union all
13 select 3 as akey1, 'eee ' as afield1, '111e ' as afield2 from dual
14 union all
15 select 3 as akey1, 'fff ' as afield1, '111f ' as afield2 from dual
16 )A;

AKEY1 AFIELD1 AFIELD2 RN
---------- ------- ------- ----------
1 aaa 111a 1
1 bbb 111b 2
1 ccc 111c 3
2 ddd 111d 1
3 eee 111e 1
3 fff 111f 2

6 rows selected