Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Giảm 19 cột xuống 5 cột

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 CODRCApivot 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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mục đích của tùy chọn ghi nhật ký / ghi nhật ký trong Oracle là gì

  2. Tải dữ liệu từ tệp văn bản vào bảng trong oracle

  3. Hàm RTRIM () trong Oracle

  4. Chúng ta không thể sử dụng [specifier] với toán tử like với Oracle?

  5. MySQL COALESCE và Hàm NULLIF