场景:
基础知识查询
环境:
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)
);
以上,感谢.