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

Dynamiczny obrót w Oracle sql - Procedura

Jeśli masz tabelę, do której chcesz wstawić wyniki przestawne za każdym razem, gdy wywołujesz Stored Proc, możesz użyć tego:

CREATE OR REPLACE PROCEDURE dynamic_pivot
AS
  v_sql LONG       := NULL;
  v_statement LONG := NULL;
BEGIN
  SELECT DISTINCT LISTAGG(''''
    || myLetter
    || ''' AS '
    || myLetter,',') WITHIN GROUP (
  ORDER BY myLetter) AS temp_in_statement
  INTO v_statement
  FROM
    (SELECT DISTINCT myLetter FROM test_data
    );
  v_sql := 'insert into pivot_table    
      select * from (SELECT myNumber, myLetter, myValue FROM test_data    
      )    
      PIVOT    
      (      
      SUM(myValue) AS val FOR myLetter IN (' || v_statement || ')    
      )';
  EXECUTE immediate v_sql;
END;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przyznanie praw do procedury składowanej innemu użytkownikowi Oracle

  2. Funkcja CAST() w Oracle

  3. podzapytanie skalarne w instrukcji if Warunek w PL/SQL

  4. Jak wyświetlić błędy w sqlplus

  5. Przykład uruchomienia zadania DBMS_SCHEDULER co godzinę