想变成这样的结构
表结构如下
----*****REM.1.12模块_平均值统计 (林铭淞)******************************---------------
CREATE TABLE TRH_DETECTOR_RPT_STAT_AVG(
OP_UUID VARCHAR2(32) ,
STAT_TIME_TYPE VARCHAR2(32), --YEAR年MON月WEEK周DAY日
STAT_DATE VARCHAR2(16) ,
DETECTOR_ID VARCHAR2(32) , -- 探头节点ID
DETECTOR_NO VARCHAR2(32) , -- 探头节点编码
DETECTOR_NAME VARCHAR2(100) , -- 探头节点名称
LOCATION_CODE VARCHAR2(32) , -- 所属仓库位置编码
LOCATION_NAME VARCHAR2(100) , -- 所属仓库位置名称
TEMPERATURE_MAX NUMBER , --最高温度
TEMPERATURE_MIN NUMBER , --最低温度
TEMPERATURE_AVG NUMBER , --平均温度
HUMIDITY_MAX NUMBER , --最高湿度
HUMIDITY_MIN NUMBER , --最低湿度
HUMIDITY_AVG NUMBER --平均湿度
);
COMMENT ON COLUMN TRH_DETECTOR_RPT_STAT_AVG.OP_UUID IS '统计操作批次ID';
COMMENT ON COLUMN TRH_DETECTOR_RPT_STAT_AVG.STAT_TIME_TYPE IS '统计时间维度:YEAR年MON月WEEK周DAY日';
COMMENT ON COLUMN TRH_DETECTOR_RPT_STAT_AVG.STAT_DATE IS '统计日期';
COMMENT ON COLUMN TRH_DETECTOR_RPT_STAT_AVG.DETECTOR_ID IS '探头节点ID ';
COMMENT ON COLUMN TRH_DETECTOR_RPT_STAT_AVG.DETECTOR_NO IS '探头节点编码 ';
COMMENT ON COLUMN TRH_DETECTOR_RPT_STAT_AVG.DETECTOR_NAME IS '探头节点名称 ';
COMMENT ON COLUMN TRH_DETECTOR_RPT_STAT_AVG.LOCATION_CODE IS '所属仓库位置编码 ';
COMMENT ON COLUMN TRH_DETECTOR_RPT_STAT_AVG.LOCATION_NAME IS '所属仓库位置名称 ';
COMMENT ON COLUMN TRH_DETECTOR_RPT_STAT_AVG.TEMPERATURE_MAX IS '最高温度 ';
COMMENT ON COLUMN TRH_DETECTOR_RPT_STAT_AVG.TEMPERATURE_MIN IS '最低温度 ';
COMMENT ON COLUMN TRH_DETECTOR_RPT_STAT_AVG.TEMPERATURE_AVG IS '平均温度 ';
COMMENT ON COLUMN TRH_DETECTOR_RPT_STAT_AVG.HUMIDITY_MAX IS '最高湿度 ';
COMMENT ON COLUMN TRH_DETECTOR_RPT_STAT_AVG.HUMIDITY_MIN IS '最低湿度 ';
COMMENT ON COLUMN TRH_DETECTOR_RPT_STAT_AVG.HUMIDITY_AVG IS '平均湿度 ';
转换sql如下
select LISTAGG(STAT_DATE || '-' || state_counts, ';') WITHIN GROUP(ORDER BY name) val,
name
from (select decode(state_code,
'TEMPERATURE_MAX',
'最高温度',
'TEMPERATURE_MIN',
'最低温度',
'TEMPERATURE_AVG',
'平均温度',
'HUMIDITY_MAX',
'最高湿度',
'HUMIDITY_MIN',
'最低湿度',
'HUMIDITY_AVG',
'平均湿度') name,
state_counts,
STAT_DATE,
STAT_YEAR
from TRH_DETECTOR_RPT_STAT_YEAR unpivot
//UNPIVOT INCLUDE nulls //包含空的
(state_counts for state_code in("TEMPERATURE_MAX",
"TEMPERATURE_MIN",
"TEMPERATURE_AVG",
"HUMIDITY_MAX",
"HUMIDITY_MIN",
"HUMIDITY_AVG")))
where STAT_YEAR = '2019'
group by name
结果
然后自己在java里进行解析val,以;进行切割获取每月对应的温湿度数据,然后手动往查询到的数据集中添加1-12月份字段并且赋值