如何使用不同的列作为参考制作数据透视表?

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

【讨论】:

以上是关于如何使用不同的列作为参考制作数据透视表?的主要内容,如果未能解决你的问题,请参考以下文章

excel数据透视表如何生成柱状图表

Excel数据透视表制作 这6个技巧超好用

使用数据透视表(熊猫)中的小计行时保留索引部分(不同的列)

用数据透视表和powerbi进行数据分析

VBA代码在数据透视表旁边的列中向下拖动公式

如何组合熊猫数据透视表中的列?