急 有些难度的有关问题 高手赐教 万分感谢
急急急急急 有些难度的问题 高手赐教 万分感谢
有一个ORACLE表,里面有201列,第一列是时间(datetime),从第2列到201列是温差 格式是temp_1 temp_2 temp_3 一直到temp_200,
共有12898行数据。其中一个时间点对应一条数据。
现在表结构发生了改变,新的表只有三列,时间datetime,房间号room_num(房间号是从1到200),温度差hl_temp,温度差hl_temp的值对应原来表当中温差值。
现在要求 新的表一个时间点对应200条数据了,即分别对应原先表中200个温差的值,
房间号为1的温度差(hl_temp)的值对应原表中temp_1的值,房间号为2的温度差(hl_temp)的值对应原表中temp_2的值,以此类推,房间号为200的的温度差(hl_temp)的值对应原表中temp_200的值。
即原来有 201列,12898行,现在要求转换为 3列 datetime,room_num,hl_temp,12898*200行的表,
请教高手赐教,如何CODE.
万分感谢,高手赐教。
------解决方案--------------------
如果我上述推断为真,那么有2种方法解决这个问题。
方法一:通过手工写SQL来实现,不过这个方法很笨:
有一个ORACLE表,里面有201列,第一列是时间(datetime),从第2列到201列是温差 格式是temp_1 temp_2 temp_3 一直到temp_200,
共有12898行数据。其中一个时间点对应一条数据。
现在表结构发生了改变,新的表只有三列,时间datetime,房间号room_num(房间号是从1到200),温度差hl_temp,温度差hl_temp的值对应原来表当中温差值。
现在要求 新的表一个时间点对应200条数据了,即分别对应原先表中200个温差的值,
房间号为1的温度差(hl_temp)的值对应原表中temp_1的值,房间号为2的温度差(hl_temp)的值对应原表中temp_2的值,以此类推,房间号为200的的温度差(hl_temp)的值对应原表中temp_200的值。
即原来有 201列,12898行,现在要求转换为 3列 datetime,room_num,hl_temp,12898*200行的表,
请教高手赐教,如何CODE.
万分感谢,高手赐教。
------解决方案--------------------
如果我上述推断为真,那么有2种方法解决这个问题。
方法一:通过手工写SQL来实现,不过这个方法很笨:
- SQL code
INSERT INTO NEWTABLE(SELECT 1,DATETIME,temp_1 FROM OLDTABLE ); INSERT INTO NEWTABLE(SELECT 2,DATETIME,temp_2 FROM OLDTABLE ); ... INSERT INTO NEWTABLE(SELECT 200,DATETIME,temp_200 FROM OLDTABLE );
------解决方案--------------------
方法2存储过程的代码,其中TEST表为你的老表,TEST2是你建立的新表
TEST2的建表语句为CREATE TABLE TEST2(DATETIME DATE,ROOM NUMBER,TEMP VARCHAR2(20))
- SQL code
--存储过程代码 CREATE OR REPLACE PROCEDURE TEST99 IS I INTEGER; STRTEMP VARCHAR2(20); STRTEMP1 VARCHAR2(20); STRSQL VARCHAR2(4000); BEGIN STRTEMP:='TEMP_'; I:=1; WHILE I<201 LOOP BEGIN STRTEMP1:=STRTEMP||I; STRSQL:='INSERT INTO TEST2(SELECT DATETIME,'||I||','||STRTEMP1||' FROM TEST)'; EXECUTE IMMEDIATE STRSQL; I:=I+1; END; END LOOP; COMMIT; END;