本帖最后由 bell6248 于 2015-2-9 17:24 编辑
如下的代码是11g的实现方法, 新版本实现代码简单
SQL> select * from tmp;
NAME ID VALUE1 VALUE2 VALUE3 VALUE4 VALUE5
---- ---------- ---------- ---------- ---------- ---------- ----------
张三 1 1 4 5 7 9
张三 2 8 6 5 7 9
李四 2 4 5 6 7
SQL>
SQL> select *
2 from
3 (select name,
4 id,
5 substr(value_desc, 1, 5) || rn value_desc,
6 case when rn <= 2 then value_s else null end value_s
7 from (select name,
8 id,
9 value_desc,
10 value_s,
11 row_number() over(partition by name, id order by va