Oracle
 sql >> база данни >  >> RDS >> Oracle

как да получите данни от една колона от една таблица в друга таблица като различни колони в PL/SQL

Ако гарантирате, че данните във вашата изходна таблица ще бъдат в този конкретен ред, можете да напишете подобна заявка, за да постигнете желания резултат:

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

Допълнение

Не се нуждаете от курсор за това (освен ако не е някакво специално изискване, което изисква използването на курсори). За да попълните друга таблица с данни, можете просто да използвате 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. Entity Framework Oracle и Sql Server - как да изградите приложение, независимо от база данни

  2. oracle преобразува времето на unix епоха до дата

  3. Вземете последния запис на набор от резултати

  4. Проблем с обединяването на пролетни връзки

  5. Как да направя заявка за разрешения за директория на Oracle?