Как сделать сводную таблицу, используя другой столбец в качестве ссылки? - PullRequest
0 голосов
/ 09 апреля 2020

Я не знаю, как получить этот результат (см. Изображение), если у меня есть эта информация:

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
);

Я хочу получить это: (см. Изображение)

enter image description here

Может ли кто-нибудь мне помочь?

Большое спасибо

С уважением

1 Ответ

3 голосов
/ 09 апреля 2020

Вы можете попробовать использовать условное агрегирование

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...