sql >> Database >  >> RDS >> Oracle

Oracle SQL kruistabquery

Voor dynamisch gegenereerde resultaten heb je een dynamische PLSQL-oplossing nodig, zoiets als deze procedure voor het maken van view 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;

Vervang in procedurecode test met uw tafelnaam. Compileer deze procedure, voer uit en selecteer de resultaten van de gegenereerde weergave 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

Telkens wanneer nieuwe waarden in kolom loc verschijnt dat u de procedure moet uitvoeren voordat u vanuit de weergave kunt selecteren.



  1. De implementatie van Amazon Auroras Multi-AZ begrijpen

  2. Optellen over partities met vensterfuncties

  3. Amazon RDS gebruiken met Android-applicatie

  4. Python Postgres De beste manier om gegevens van een tabel op de ene DB in een andere tabel op een andere DB in te voegen