oracle 将数据垂直显示,

想变成这样的结构

表结构如下

----*****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月份字段并且赋值

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值