Oracle如何将单列中不同typeid对应的值转为多列单独展示
解决方案
你可以通过CASE WHEN条件表达式实现行转列需求,不需要聚合操作,会完整保留所有原始行数据,仅将对应类型的value值填充到目标列,其余类型对应的列返回空值。
修改后的查询语句如下:
SELECT OBJECTID ,TRUNC(DATETIME + 1 / (24 * 12), 'HH24') DATETIME ,TIMEZONE ,CASE WHEN typeid = 1 THEN VALUE END AS abc ,CASE WHEN typeid = 2 THEN VALUE END AS def ,CASE WHEN typeid = 3 THEN VALUE END AS ghi ,CASE WHEN typeid = 4 THEN VALUE END AS jkl ,LOADID LOADID FROM PROD.TS_WSI_HOURLY_OBSERVATION WHERE typeid IN(1,2,3,4);
实现效果说明:
- 每一行对应原始表的一条记录,不会做行合并
- 每行仅匹配当前行typeid的列会显示对应value值,其余三列返回空值
- 所有原始业务字段(OBJECTID、DATETIME、TIMEZONE、LOADID)都会完整保留
内容的提问来源于stack exchange,提问作者Webb
相关产品推荐
相关产品推荐

