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

cách lấy dữ liệu một cột từ một bảng sang một bảng khác dưới dạng các cột khác nhau trong PL / SQL

Nếu bạn đảm bảo rằng dữ liệu trong bảng nguồn của bạn sẽ theo thứ tự cụ thể này, bạn có thể viết một truy vấn tương tự để đạt được kết quả mong muốn:

-- sample of data from your question
SQL> with t1(col) as(
  2    select 'Scott'  from dual union all
  3    select '100'    from dual union all
  4    select '10'     from dual union all
  5    select 'Miller' from dual union all
  6    select '200'    from dual union all
  7    select '20'     from dual union all
  8    select 'Mike'   from dual union all
  9    select '300'    from dual union all
 10    select '30'     from dual union all
 11    select 'Allen'  from dual union all
 12    select '400'    from dual union all
 13    select '40'     from dual
 14  ) -- the query
 15  select max(decode(mod(rownum - 1, 3), 0, col)) as name
 16       , max(decode(mod(rownum - 1, 3), 1, col)) as sal
 17       , max(decode(mod(rownum - 1, 3), 2, col)) as depno
 18    from t1
 19    group by trunc((rownum -1)/ 3)
 20  /

NAME   SAL    DEPNO
------ ------ ------
Miller 200    20
Mike   300    30
Allen  400    40
Scott  100    10

Phụ lục

Bạn không cần con trỏ cho việc này (trừ khi đó là một số loại yêu cầu đặc biệt yêu cầu sử dụng con trỏ). Để điền dữ liệu vào bảng khác, bạn chỉ cần sử dụng INSERT INTO ... SELECT :

insert into temp_process(name, sal, depno)
   select max(decode(mod(rownum - 1, 3), 0, col)) 
        , max(decode(mod(rownum - 1, 3), 1, col)) 
        , max(decode(mod(rownum - 1, 3), 2, col))
     from table_a
     group by trunc((rownum -1)/ 3)  



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle PLS-00363:không thể sử dụng biểu thức '' làm mục tiêu gán

  2. Hàng đợi nâng cao Oracle trong Java

  3. ORA-00933 Lệnh SQL không được kết thúc đúng cách nhưng tốt trong SQL Developer

  4. Đối chiếu không phân biệt trọng âm và chữ hoa chữ thường trong Oracle với LIKE

  5. Rails 3.0.3 - Oracle_enhanced không hoạt động