我正在尝试使用数据透视表将行转置为列,但是我无法在最终输出中添加聚合列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
只需使用条件聚合。我认为这就是您想要的:
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;