oracle - Oracle - 将行转换为列
问题描述
这是我一直在处理的表格中的一个示例:
CREATE TABLE TEST_MC
(
CLUSTER_K INTEGER,
PROCESS_PHASE INTEGER,
SEM_AGG CHAR(1)
);
CLUSTER_K PROCESS_PHASE SEM_AGG
==================================
328 1 M
----------------------------------
328 2 A
----------------------------------
328 3 A
现在,我想转置和折叠行以获得以下结果:
CLUSTER_K SEM_AGG_1 SEM_AGG_2 SEM_AGG_3
=============================================
328 M A A
我怎样才能实现这一点(枢轴和/或分析功能)?
任何帮助是极大的赞赏。
解决方案
您可以使用 GROUP BY:
select CLUSTER_K,
max(case when PROCESS_PHASE=1 then SEM_AGG else null end) SEM_AGG_1,
max(case when PROCESS_PHASE=2 then SEM_AGG else null end) SEM_AGG_2,
max(case when PROCESS_PHASE=3 then SEM_AGG else null end) SEM_AGG_3
from test_mc
group by CLUSTER_K
推荐阅读
- amazon-web-services - Secrets Manager Redshift 凭证轮换失败并显示“无法登录数据库”
- html - 我无法为 HTML 表格设置边框
- flutter - 后期初始化错误字段 imageFile 尚未初始化
- flutter - 我如何访问变量?
- json - Hubspot 联系人 API 无法通过 usertoken 工作
- excel - Power Automate - 获取表返回“找不到资源”
- javascript - 无法在猫鼬中保存地图
- javascript - 在 Typescript 中使用合并运算符
- firebase - 部署 Firebase 功能时出现 Eslint 错误
- react-native - 如何使特定屏幕以横向模式显示(例如播放视频),而其他屏幕在本机反应中被锁定为纵向模式?