将表中的数据插入到按列排序的另一个表中

时间:2012-11-07 00:42:58

标签: sql oracle plsql

临时表TMP_OA_PSTN_CMP_11035包含字段:

ACTION_OBJID NUMBER,
CONTRACT_OBJID NUMBER,
STATUS varchar2(40),
UPDATE_DATE DATE

这包含700万个data.i想要创建七个不同的临时表,其中包含来自TMP_OA_PSTN_CMP_11035的数据,这些数据按action_objid排序,每个包含100万条记录。 列ACTION_OBJID不是序列。

我尝试使用rownum,但输入随机数据。

对于EG:

Temp1:包含5,8 ...到1100000的action_objid的数据(因为action_objid不是序列,这多为100万个数据)。 同样,对于其他6个临时表。 我正在使用oracle 10g。

1 个答案:

答案 0 :(得分:1)

怎么样

CREATE TABLE TEMP_TABLE_1
  SELECT *
    FROM (SELECT *
            FROM TMP_OA_PSTN_CMP_11035
            WHERE ACTION_OBJID > 0
            ORDER BY ACTION_OBJID)
    WHERE ROWNUM <= 1000000

然后对每个其他临时表重复上述操作,将WHERE ACTION_OBJID > 0替换为(SELECT MAX(ACTION_OBJID) FROM name of previous temp table)。因此,对于TEMP_TABLE_2,语句将是

CREATE TABLE TEMP_TABLE_2
  SELECT *
    FROM (SELECT *
            FROM TMP_OA_PSTN_CMP_11035
            WHERE ACTION_OBJID > (SELECT MAX(ACTION_OBJID) FROM TEMP_TABLE_1)
            ORDER BY ACTION_OBJID)
    WHERE ROWNUM <= 1000000

分享并享受。