0
SOURCE_TABLE 
------------
OID EVENT_ID  
1   1111  
2   2222
3   1111  
4   1111  
5   1111  
6   2222  
7   2222  
8   2222  

FINAL_TABLE  
------------
SNO EVENT_ID    OID LINE_NUMBER  
1   1111        1   1  
2   1111        1   2  
3   1111        3   3   
4   1111        3   4  
5   1111        4   5  
6   1111        4   6  
7   1111        5   7  
8   1111        5   8  
9   2222        2   1  
10  2222        2   2  
11  2222        6   3  
12  2222        6   4  
13  2222        7   5  
14  2222        7   6  
15  2222        8   7  
16  2222        8   8

我正在使用 Oracle 11g。我想将 SOURCE 表中的数据插入到 FINAL 表中。在 FINAL 表中,每个 EVENT_ID 的行号必须是唯一的(例如 1111)。

4

2 回答 2

3

假设 SNO 是 Final_Table 中的自增 PK。使用ROW_NUMBER() 函数

insert into FINAL_TABLE   (EVENT_ID,  OID,  LINE_NUMBER)
  (
    select EVENT_ID,OID,
       ROW_NUMBER() OVER(PARTITION BY EVENT_ID ORDER BY OID) as LINE_NUMBER
    from source_table
  );
于 2012-08-29T12:01:03.640 回答
0

如果我理解正确你在这之后

   SELECT EVENT_ID, OID  ROW_NUMBER()
   OVER (PARTITION BY EVENT_ID,OID ORDER BY OID) AS LINE_NUMBER
   FROM SOURCE_TABLE;
于 2012-08-29T12:02:23.050 回答