簡體   English   中英

oracle sql 根據某些其他列對特定列進行分組

[英]oracle sql to group specific column based on some other column

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)。

假設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
  );

如果我理解正確的話,你是在追求這個

   SELECT EVENT_ID, OID  ROW_NUMBER()
   OVER (PARTITION BY EVENT_ID,OID ORDER BY OID) AS LINE_NUMBER
   FROM SOURCE_TABLE;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM