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

UNPIVOT na wielu kolumnach, aby zwrócić wiele kolumn

tak:

SQL> select * from network_table;

 ORIG_CODE    ORIG_SV  DEST_CODE    DEST_SV
---------- ---------- ---------- ----------
        14          1         15          1
        12          2         22          2
        18          4         11          1
        15          1         22          3
        14          3         11          1

SQL> select case name when 'ORIG_SV' then orig_code else dest_code end code, val 
  2  from network_table 
  3  unpivot (val for name in (orig_sv, dest_sv));

      CODE        VAL
---------- ----------
        14          1
        15          1
        12          2
        22          2
        18          4
        11          1
        15          1
        22          3
        14          3
        11          1

lub 10g i mniej:

SQL> select case  r when 1 then orig_code else dest_code end code,
  2         case r when 1 then orig_sv else dest_sv end val
  3    from network_table, (select rownum r from dual connect by level <= 2)
  4  /

      CODE        VAL
---------- ----------
        14          1
        12          2
        18          4
        15          1
        14          3
        15          1
        22          2
        11          1
        22          3
        11          1


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak radzić sobie z wieloma strefami czasowymi w aplikacjach przechowujących daty i godziny?

  2. Jak sprawdzić, czy wszystkie pola są unikalne w Oracle?

  3. Oracle Entity Framework — generowanie encji z tabel w innym schemacie

  4. Instalacja Oracle dla łączności SSIS (i sterowniki 32 64-bitowe)

  5. Solve nie może wykonać operacji DML wewnątrz zapytania