sql >> Database teknologi >  >> RDS >> Oracle

pivot virker ikke, når du bruger et indlejret udvalg i SQL

Du kan ikke direkte tilføje dynamiske udtryk som input til pivottabellen, du kan prøve noget som dette, hvor vi henter alle kolonnerne i tabellen i en variabel via en PL/SQL-blok og derefter videregiver det på en måde til det forventede af Oracle Pivottabel funktionalitet.

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. Oracle Pipelined funktion

  2. Hvordan udtrækkes gentagelige json-nodeværdier separat fra XML ved hjælp af ORACLE SQL?

  3. Sådan synkroniseres SQLServer-database og MySQL-database

  4. ER_NOT_SUPPORTED_AUTH_MODE:Klienten understøtter ikke godkendelsesprotokol anmodet af serveren; overveje at opgradere MySQL-klienten