sql >> データベース >  >> RDS >> Oracle

OracleSQL-行を列に動的に変換する

    MSSQLを使用していないことは承知していますが、この概念が役立つ可能性があります。

    よくわかりませんが、STRING_AGGの代わりに LISTAGGが必要になる場合があります 。ここでコンセプトを伝えようとしています。

    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. 条件とキャストを必要とする計算フィールドのDjangoクエリ式

    2. MYSQLデータベースに画像をアップロードし、PHPとSwiftを使用して表示します

    3. mysqlでinnodbを無効にする方法は?

    4. MySQLとMariaDBのディザスタリカバリ計画