sql >> Databáze >  >> RDS >> Oracle

Křížový dotaz Oracle SQL

Pro dynamicky generované výsledky potřebujete nějaké dynamické PLSQL řešení, něco jako tento postup pro vytvoření pohledu 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;

V kódu procedury nahraďte test s názvem vaší tabulky. Zkompilujte tento postup, spusťte a vyberte výsledky z vygenerovaného zobrazení 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

Pokaždé, když nové hodnoty ve sloupci loc se zobrazí, že před výběrem ze zobrazení musíte provést proceduru.



  1. Jak získat záznamy za posledních 15 dní v MySQL

  2. org.h2.jdbc.JdbcSQLException:ID sloupce nebylo nalezeno

  3. Použijte konektor JDBC/Mysql v nápadu Intellij

  4. Jak přidat ID automatického zvýšení podle skupiny v mysql