Julio
Julio

Reputation: 551

How make a pivot table using different column as reference?

I don't know how to get this result (see image) if I have this information:

CREATE TABLE TABLE_1 
( 
     FECHA  DATE NOT NULL
    ,LUGAR  VARCHAR2(5) NOT NULL
    ,TIPO_USO   VARCHAR2(2) NOT NULL
    ,NUM_PERSONAS   NUMBER
    ,FORM_PAGO  VARCHAR2(255) NOT NULL
);

Insert into TABLE_1 (FECHA,LUGAR,TIPO_USO,NUM_PERSONAS,FORM_PAGO) values (to_date('19/04/01','RR/MM/DD'),'H1','U1','3','tarjeta');
Insert into TABLE_1 (FECHA,LUGAR,TIPO_USO,NUM_PERSONAS,FORM_PAGO) values (to_date('19/04/01','RR/MM/DD'),'H1','U3','2','tarjeta');
Insert into TABLE_1 (FECHA,LUGAR,TIPO_USO,NUM_PERSONAS,FORM_PAGO) values (to_date('19/04/01','RR/MM/DD'),'H1','U4','4','tarjeta');
Insert into TABLE_1 (FECHA,LUGAR,TIPO_USO,NUM_PERSONAS,FORM_PAGO) values (to_date('19/04/02','RR/MM/DD'),'H3','U2','1','ticket');
Insert into TABLE_1 (FECHA,LUGAR,TIPO_USO,NUM_PERSONAS,FORM_PAGO) values (to_date('19/04/02','RR/MM/DD'),'H4','U5','2','ticket');
Insert into TABLE_1 (FECHA,LUGAR,TIPO_USO,NUM_PERSONAS,FORM_PAGO) values (to_date('19/04/02','RR/MM/DD'),'H5','U1','3','tarjeta');
Insert into TABLE_1 (FECHA,LUGAR,TIPO_USO,NUM_PERSONAS,FORM_PAGO) values (to_date('19/04/02','RR/MM/DD'),'H5','U3','2','tarjeta');
Insert into TABLE_1 (FECHA,LUGAR,TIPO_USO,NUM_PERSONAS,FORM_PAGO) values (to_date('19/04/02','RR/MM/DD'),'H5','U4','4','tarjeta');
Insert into TABLE_1 (FECHA,LUGAR,TIPO_USO,NUM_PERSONAS,FORM_PAGO) values (to_date('19/04/03','RR/MM/DD'),'H10','U1','3','tarjeta');
Insert into TABLE_1 (FECHA,LUGAR,TIPO_USO,NUM_PERSONAS,FORM_PAGO) values (to_date('19/04/03','RR/MM/DD'),'H10','U2','1','tarjeta');
Insert into TABLE_1 (FECHA,LUGAR,TIPO_USO,NUM_PERSONAS,FORM_PAGO) values (to_date('19/04/03','RR/MM/DD'),'H12','U3','2','ticket');

CREATE SEQUENCE  "SEQ_REPORTE"  MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 2206 NOCACHE  ORDER  NOCYCLE  NOKEEP  NOSCALE  GLOBAL ;


CREATE TABLE TABLE_2 ( 
     ID NUMBER DEFAULT SEQ_REPORTE.nextval  NOT NULL
    ,FECHA  DATE NOT NULL
    ,LUGAR  VARCHAR2(5) NOT NULL
    ,U1 NUMBER
    ,U2 NUMBER
    ,U3 NUMBER
    ,U4 NUMBER
    ,U5 NUMBER
    ,FORM_PAGO  VARCHAR2(255) NOT NULL
);

i want to get this : (see image)

enter image description here

Can somebody help me?

Thanks so much

Regards

Upvotes: 0

Views: 44

Answers (1)

Fahmi
Fahmi

Reputation: 37483

You can try using conditional aggregation

select FECHA,LUGAR,
       max(case when TIPO_USO='U1' then NUM_PERSONAS end) as U1,
       max(case when TIPO_USO='U2' then NUM_PERSONAS end) as U2,
       max(case when TIPO_USO='U3' then NUM_PERSONAS end) as U3,
       max(case when TIPO_USO='U4' then NUM_PERSONAS end) as U4,
       max(case when TIPO_USO='U5' then NUM_PERSONAS end) as U5,FORM_PAGO
from tablename
group by FECHA,LUGAR,FORM_PAGO

Upvotes: 3

Related Questions