oracle基础积累-行转列

本文介绍在Oracle Database 11g中使用PL/SQL Developer进行数据转换的方法,详细展示了如何将行数据转化为列数据,并提供了一个具体实例。同时,文中还分享了从数据字段中截取出精确时间的SQL语句,以及创建表的完整语句。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

场景:
        基础知识查询
环境:
        Oracle Database 11g; PL/SQL Developer
1.行转列sql

SELECT SENSOR_ID,
       DATA_DATE,
       DATA_TYPE,
       REGION,
       S,
       COLUMN_S,
       (SUBSTR(S, 2, 2) - 1) * 60 / (24 * 60) + TRUNC(SYSDATE-1) DATA_TIME
  FROM  SENSOR_COLLECT_DATA UNPIVOT(COLUMN_S FOR S IN(S1,
  S2,S3,S4,S5,S6,S7,S8,S9,S10,S11,S12,S13,S14,S15,S16,S17,S18,S19,S20,S21,S22,S23,S24 ));

2.行数据查询截图
3.行转列后查询数据截图
 
4.截取时间sql
      一天24小时,数据S1到S24每1个小时截取时间
      (SUBSTR(S, 2, 2) - 1) * 60 / (24 * 60) + TRUNC(SYSDATE-1)
5.附,建表语句.

create table SENSOR_COLLECT_DATA
(
  sensor_id         NUMBER(16) not null,
  data_date       DATE not null,
  data_type       NUMBER(2) not null,
  region          VARCHAR2(16) not null,
  s1     NUMBER(6,3),        
  s2     NUMBER(6,3),       
  s3     NUMBER(6,3),       
  s4     NUMBER(6,3),       
  s5     NUMBER(6,3),       
  s6     NUMBER(6,3),       
  s7     NUMBER(6,3),       
  s8     NUMBER(6,3),       
  s9     NUMBER(6,3),       
  s10    NUMBER(6,3),       
  s11    NUMBER(6,3),       
  s12    NUMBER(6,3),
  s13	 NUMBER(6,3),  
  s14	 NUMBER(6,3),  
  s15	 NUMBER(6,3),  
  s16	 NUMBER(6,3),  
  s17	 NUMBER(6,3),  
  s18	 NUMBER(6,3),  
  s19	 NUMBER(6,3),  
  s20	 NUMBER(6,3),  
  s21	 NUMBER(6,3),  
  s22	 NUMBER(6,3),  
  s23	 NUMBER(6,3),  
  s24	 NUMBER(6,3)
);

以上,感谢.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值