sql - 数据透视表:在 oracle 中选择聚合列
问题描述
我正在尝试使用数据透视将行转换为列,但我无法在最终输出中添加聚合列 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, Y);
INSERT INTO test_pi VALUES (200 ,EVENT, Y);
INSERT INTO test_pi VALUES (300 ,EVENT, Y);
INSERT INTO test_pi VALUES (300 ,EVENT, Y);
我试过了
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;
推荐阅读
- c# - WHERE 子句中使用的拆分 varchar 值
- numpy - 如何避免在pytorch或numpy中分割和求和
- sql - SQL:复制没有标识列的整个表?
- c# - 图形线 (X,Y,Z) 控件
- python - 比较两个数据框进行分类
- multithreading - Tomcat 响应时间不一致
- ios - 需要在用于 OTP 的 twilio API 中显示发件人姓名或号码的密钥名称
- pdfsharp - 生成pdf时的Pdfsharp和边距
- tensorflow - 如何在同一个项目中使用多个版本的 Tensorflow?
- android - 如何解决“Gradle‘我的第一个项目’项目刷新失败错误:错误:无法解析配置的所有依赖项