Những gì bạn đang tìm kiếm đơn giản PIVOT
tính năng.
Sự khác biệt duy nhất là bạn không muốn pivot
trên cột giá trị , nhưng có thể theo thứ tự từ khóa .
Đây là truy vấn để xoay vòng theo thứ tự bảng chữ cái từ khóa.
Lưu ý rằng hai truy vấn con đầu tiên chỉ tạo ra dữ liệu được đơn giản hóa như sau:
CODPRO CODRCA
------- ------
400JE LOGIST
400JE INDLEG
50EFJ10 TP
50EFJ10 ESPVER
50EFJ10 AGRICU
50EFJ10 INDLEG
50EFJ10 LOGIST
Truy vấn tính toán số hàng đầu tiên bằng cách sử dụng thứ tự của CODRCA
và pivot
trên đó:
with PRO as (
select '400JE' CODPRO from dual union all
select '50EFJ10' CODPRO from dual),
RCA as (
select '400JE' CODPRO, 'LOGIST' CODRCA from dual union all
select '400JE' CODPRO, 'INDLEG' CODRCA from dual union all
select '50EFJ10' CODPRO, 'TP' CODRCA from dual union all
select '50EFJ10' CODPRO, 'ESPVER' CODRCA from dual union all
select '50EFJ10' CODPRO, 'AGRICU' CODRCA from dual union all
select '50EFJ10' CODPRO, 'INDLEG' CODRCA from dual union all
select '50EFJ10' CODPRO, 'LOGIST' CODRCA from dual),
rn as (
select PRO.CODPRO,RCA.CODRCA,
row_number() over (partition by PRO.CODPRO order by RCA.CODRCA) as rn
from PRO
join RCA on PRO.CODPRO = RCA.CODPRO)
select *
from rn
pivot (max(CODRCA) CODRCA for (rn) in
(1 as "C1",
2 as "C2",
3 as "C3",
4 as "C4",
5 as "C5"))
kết quả
CODPRO C1_COD C2_COD C3_COD C4_COD C5_COD
------- ------ ------ ------ ------ ------
400JE INDLEG LOGIST
50EFJ10 AGRICU ESPVER INDLEG LOGIST TP
Nếu bạn thích sắp xếp logik khác điều chỉnh theo yêu cầu. Ngoài ra, điều chỉnh nếu bạn cần các tên cột khác nhau.