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

pivot không hoạt động khi sử dụng một lựa chọn lồng nhau trong SQL

Bạn không thể thêm trực tiếp các biểu thức động làm đầu vào cho bảng Pivot, Bạn có thể thử một cái gì đó như thế này, trong đó chúng tôi truy xuất tất cả các cột của bảng trong một biến thông qua Khối PL / SQL và sau đó chuyển nó theo cách mà Oracle mong đợi Chức năng của bảng tổng hợp.

SET serveroutput ON;


    DECLARE 
    sqlquery VARCHAR(32767);
    cols VARCHAR2(32767);
    BEGIN

      SELECT listagg('''' || column_name || '''',   ',') within
      GROUP(
      ORDER BY column_name)
      INTO cols
      FROM
        (SELECT DISTINCT column_name
         FROM all_tab_columns
         WHERE TABLE_NAME = 'TABLE_NAME')
      ;

      sqlquery := '      
    SELECT * FROM
    (
      SELECT table_name, column_name
      FROM ALL_TAB_COLUMNS
      WHERE
          table_name = ''TABLE_NAME''
    )
    PIVOT
    (
      MIN(column_name)
      FOR column_name IN ( 
            ''||cols||''
        )
      )
      ORDER BY table_name';

      DBMS_OUTPUT.PUT_LINE(sqlquery);

      EXECUTE IMMEDIATE sqlquery;

    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. Làm thế nào để hiển thị các bản ghi từ một bảng được sắp xếp như trong mệnh đề where?

  2. Ví dụ thu thập hàng loạt Oracle bằng cách sử dụng đối tượng loại Rowtype con trỏ

  3. Đặc tả của Oracle hay SQL? :Cắt ngắn bảng với các ràng buộc khóa ngoại

  4. CURRENT_TIMESTAMP và SYSDATE khác nhau trong tiên tri

  5. Oracle trong C #, các biến liên kết và các truy vấn như ID IN (1, 2, 3)