原始數據

type 分 1,2,3,4,5
select name,yield ,type
--type將數據分成不同組,為每組生成編號
,row_number() over(partition by type order by yield desc) rn
--,dense_rank() over(order by yield desc) rn
from AAA

根據分組生成每組對應的編號
最終sql
select max(case when type = 1 then name end) as lv1 , max(decode(type,1,yield)) Ayield, max(case when type = 2 then name end) as lv2 , max(decode(type,2,yield)) Byield, max(case when type = 3 then name end) as lv3 , max(decode(type,3,yield)) Cyield, max(case when type = 4 then name end) as lv4 , max(decode(type,4,yield)) Dyield, max(case when type = 5 then name end) as lv5 , max(decode(type,5,yield)) Eyield from ( select name,yield ,type --type將數據分成不同組,為每組生成編號 ,row_number() over(partition by type order by yield desc) rn --,dense_rank() over(order by yield desc) rn from AAA ) group by rn order by rn

如果沒有分類,可以加一列分組
select max(case when lev = 1 then name end) as lv1,
max(case when lev = 2 then name end) as lv2 ,
max(case when lev = 3 then name end) as lv3
from
(
select name ,yield ,
--對數據分組
case when rn <=16 then 1 when rn <= 32 then 2 else 3 end lev
--不同分組編號
,row_number() over(partition by (case when rn <= 16 then 1 when rn <= 32 then 2 else 3 end ) order by yield desc) rn
from
(
select name,yield
--,row_number() over(partition by name order by yield desc) rn
,dense_rank() over(order by yield desc) rn
from AAA
)
)
group by rn
--order by rn

