如何使用不同的列作为参考制作数据透视表?
Posted
技术标签:
【中文标题】如何使用不同的列作为参考制作数据透视表?【英文标题】:How make a pivot table using different column as reference? 【发布时间】:2020-04-09 06:56:29 【问题描述】:如果我有这些信息,我不知道如何得到这个结果(见图):
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
);
我想得到这个:(见图)
有人可以帮帮我吗?
非常感谢
问候
【问题讨论】:
【参考方案1】:您可以尝试使用条件聚合
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
【讨论】:
以上是关于如何使用不同的列作为参考制作数据透视表?的主要内容,如果未能解决你的问题,请参考以下文章