Hola a todos, he recibido una consulta si en APEX se puede hacer un reporte tipo Matrix, y paso a explicar como se puede hacer basandome en el libro de Oracle APEX Reporting.


Necesitamos tener el esquema OEHR de ejemplo.

1) Crear un Reporte Clasico tipo SQL Query (PL/SQL function body returing SQL query) Por ejemplo en Pagina 3

2) Source:

begin
return ‘WITH pivot_data AS (
           SELECT department_id, job_id, salary
           FROM   oehr_employees
           )
   SELECT *
   FROM   pivot_data
   PIVOT (
              SUM(salary)      
          FOR department_id        
          IN  (‘ || v(‘P3_EMPLOYEE_LIST’) || ‘) 
        )’;
end;

3) Tildar:  Use Generic Column Names (parse query at runtime only) (dejar en 60 el maximo de columnas genericas)

4) En atribuos del reporte en la seccion: Column Attributes tildar PL/SQL e ingresar en Function returning colon delimited headings:

return ‘Job list:’||replace(v(‘P3_EMPLOYEE_LIST’),’,’,’:’);

5) Crear un ITEM oculto P3_EMPLOYEE_LIST

Source:
Only when current value in session state is null
SQL Query return single value
Ingresar la consulta:
select  listagg(department_id,’,’) WITHIN GROUP (ORDER BY department_id) from (select distinct department_id from oehr_employees)