Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Kueri Tab Silang Oracle SQL

Untuk hasil yang dihasilkan secara dinamis, Anda memerlukan beberapa solusi PLSQL dinamis, seperti prosedur ini membuat tampilan v_list_loc :

create or replace procedure p_list_loc is

  v_sql varchar2(32000) := '';

begin

  for c in (select distinct loc from test order by loc) loop
    v_sql := v_sql || '''' ||c.loc|| ''' '||c.loc||',';
  end loop;

  v_sql := 'create or replace view v_list_loc as '
    ||'select * from (select item, loc, stock from test) pivot (sum(stock) '
    ||'for (loc) in ('||rtrim(v_sql, ',')||'))';

  execute immediate v_sql;

end p_list_loc;

Dalam kode prosedur, ganti test dengan nama tabel Anda. Kompilasi prosedur ini, jalankan dan pilih hasil dari tampilan yang dihasilkan v_list_loc :

SQL> exec p_list_loc;

PL/SQL procedure successfully completed

SQL> select * from v_list_loc;

ITEM         KS5        KS6
----- ---------- ----------
0001          10         30
0002          10         20

Setiap kali nilai baru di kolom loc tampaknya Anda perlu menjalankan prosedur sebelum memilih dari tampilan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ambil baris terbaru - pra- Oracle 12c

  2. Penanganan data benih di patching online R12.2

  3. PL/SQL - Gunakan Variabel Daftar di Mana Dalam Klausa

  4. LISTAGG setara dengan klausa windowing

  5. Oracle 10g Connect By Sebelumnya - Masalah Performa