sql >> Database >  >> RDS >> Oracle

Oracle SQL - Rijen dynamisch naar kolommen converteren

Ik weet dat je geen MSSQL gebruikt, maar dit concept kan je misschien helpen.

Ik weet het niet zeker, maar in plaats van STRING_AGG je hebt misschien LISTAGG . nodig . Ik probeer alleen het concept hier over te brengen.

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. Afsluiten van PostgreSQLs Command Line Utility (psql)

  2. Een resultatenset voor SQL-query's verwijderen

  3. update en voeg query's in die een impasse creëren

  4. Hoe gegevens in CDATA in oracle te ontleden