Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Oracle SQL - Mengubah baris menjadi kolom secara dinamis

Saya tahu Anda tidak menggunakan MSSQL, namun konsep ini mungkin dapat membantu Anda.

Saya tidak yakin tetapi menggantikan STRING_AGG Anda mungkin memerlukan LISTAGG . Saya hanya mencoba menyampaikan konsepnya di sini.

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. Cara mengekspor teks yang dapat dicetak saja (atau properti paket lainnya) di wireshark

  2. Semantik CHAR dan ORA-01461

  3. Format tanggal default Oracle adalah YYYY-MM-DD, MENGAPA?

  4. 3 Cara Memformat Angka menjadi 2 Tempat Desimal di Oracle

  5. Memodifikasi fungsi PLSQL untuk mengembalikan beberapa baris dari kolom yang sama