数据透视表:在oracle中选择聚合列

问题描述 投票:0回答:1

我正在尝试使用数据透视表将行转置为列,但是我无法在最终输出中添加聚合列t_flg。关于此的任何建议。

 CREATE TABLE "TEST_PI" 
   ("ID" NUMBER(20,0), 
    "T_NAME" VARCHAR2(20 CHAR), 
    "T_FLG" VARCHAR2(1 CHAR)
   ) 


INSERT INTO test_pi VALUES (100 ,EVENT, N);
INSERT INTO test_pi VALUES (100 ,EVENT, N);
INSERT INTO test_pi VALUES (200 ,EVENT, N);
INSERT INTO test_pi VALUES (200 ,EVENT, N);
INSERT INTO test_pi VALUES (300 ,EVENT, N);
INSERT INTO test_pi VALUES (300 ,EVENT, N);

我尝试过

 WITH pivot_data AS (
 select ID,T_NAME,T_FLG from TEST_PI
 )
SELECT *
FROM   pivot_data
PIVOT (
MIN(T_FLG) 
FOR T_NAME 
IN  ('EVENT'      AS EVENTS,
     'CAT'        AS CAT
    )
);

期望的输出

ID  T_FLG EVENTS  CAT
100  N     N      N
200  Y     Y      Y
300  Y     Y      Y
sql oracle12c
1个回答
0
投票

只需使用条件聚合。我认为这就是您想要的:

select id, min(t_flg) as t_flg,
       min(case when t_name = 'EVENT' then t_value end) as event,
       min(case when t_name = 'CAT' then t_value end) as cat
from test_pi
group by id;
© www.soinside.com 2019 - 2024. All rights reserved.