你的「編號」值顯示爲字符串,你不能有一個名爲number
除非你使用帶引號的標識符列,所以我取代value
創建示例數據:
create table table1(value varchar2(7), name varchar2(4));
insert into table1 (value, name)
select '01', 'A' from dual
union all select '01', 'B' from dual
union all select '02', 'A' from dual
union all select '01', 'C' from dual
union all select '02', 'C' from dual
union all select '03', 'C' from dual
union all select '04', 'C' from dual
/
您可以使用分析功能來分配行號或排名,以每個值:
select name, value,
row_number() over (partition by name order by value) as rn
from table1;
NAME VALUE RN
---- ------- ----------
A 01 1
A 02 2
B 01 1
C 01 1
C 02 2
C 03 3
C 04 4
然後你就可以pivot
that query(只要你在11g或更高),以獲得結果你想要的:
select *
from (
select name, value,
row_number() over (partition by name order by value) as rn
from table1
)
pivot (max(value) as value for (rn) in (1, 2, 3, 4, 5));
NAME 1_VALUE 2_VALUE 3_VALUE 4_VALUE 5_VALUE
---- ------- ------- ------- ------- -------
A 01 02
B 01
C 01 02 03 04
排序高於5的任何內容都被pivot操作忽略。
到目前爲止您嘗試了什麼? – RealCheeseLord