Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Oracle SQL - Chuyển đổi hàng thành cột động

Tôi biết bạn không sử dụng MSSQL, tuy nhiên khái niệm này có thể giúp ích cho bạn.

Tôi không chắc nhưng thay cho STRING_AGG bạn có thể cần LISTAGG . Tôi chỉ đang cố gắng truyền đạt khái niệm ở đây.

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. oracle express 11g ngoại lệ kỳ lạ

  2. Làm thế nào để viết các thủ tục được lưu trữ bằng cách sử dụng các bảng từ một lược đồ khác?

  3. chuỗi kết nối java để hỗ trợ tính năng TAF oracle

  4. Có thể đọc CLOB từ cơ sở dữ liệu Oracle từ xa không?

  5. Trong một thủ tục PL / SQL, bọc một truy vấn hoặc con trỏ chuột trong bảng HTML