Oracle
 sql >> Baza danych >  >> RDS >> Oracle

jak pobrać dane z jednej kolumny z jednej tabeli do innej tabeli jako różne kolumny w PL/SQL?

Jeśli zagwarantujesz, że dane w Twojej tabeli źródłowej będą w tej konkretnej kolejności, możesz napisać podobne zapytanie, aby osiągnąć pożądany wynik:

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

Uzupełnienie

Nie potrzebujesz do tego kursora (chyba że jest to jakiś specjalny wymóg, który wymaga użycia kursorów). Aby wypełnić inną tabelę danymi, możesz po prostu użyć 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. Funkcja grupy SQL zagnieżdżona zbyt głęboko

  2. Oracle SQL Dev, jak obliczyć liczbę dni tygodnia między 2 datami

  3. Zrzuć dane z tabeli Oracle do instrukcji INSERT

  4. Oracle OSM — XQuery nie zapętla się

  5. vba ODBC daje Nieokreślony błąd, gdy tabela Oracle ma znacznik czasu