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 に答える