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

Oracle SQL — dynamiczne przekształcanie wierszy w kolumny

Wiem, że nie używasz MSSQL, jednak ta koncepcja może ci pomóc.

Nie jestem pewien, ale zamiast STRING_AGG możesz potrzebować LISTAGG . Po prostu staram się przekazać tę koncepcję tutaj.

CREATE PROCEDURE PivotMyTable
AS

BEGIN
  DECLARE @cols NVARCHAR(MAX) = '';
  DECLARE @sql NVARCHAR(MAX) = 'select * from (select competency_id from competency_tab t) pivot (count(competency_id) for competency_id in (##COLUMS##))'

  WITH T
  AS
  (SELECT DISTINCT
      competency_id
    FROM competency_tab)
  SELECT
    @cols = STRING_AGG(QUOTENAME(T.competency_id, ''''), ',')
  FROM T

  SET @sql = REPLACE(@sql, '##COLUMNS##', @cols);

  EXEC @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. ORA-00942:tabela lub widok nie istnieje dla tabeli i kolumn mieszanych wielkości liter

  2. Czy po każdym wykonaniu EXECUTE IMMEDIATE wymagane jest COMMIT?

  3. Dziwny wzorzec użycia pamięci w aplikacji C# Windows Form

  4. Oracle:Jak wywołać przeciążoną procedurę?

  5. Jak połączyć Androida z bazą danych Oracle?