如何使用重复行序列查询数据

时间:2017-06-17 21:12:21

标签: sql oracle oracle11g

我的数据包含下表:

    ID  SAL         
_______________
    1   1500        
    1   1500        
    1   2000        
    1   1500        
    2   2500        
    2   2500        
    3   1500    

我想用新列查询相同的数据 BUT ,该列给出了每个重复行的序列(基于id和sal列)。

我想要的查询结果应该是这样的:

   ID  SAL      ROW_SEQ
_______________________
    1   1500     1
    1   1500     2
    1   2000     1
    1   1500     3
    2   2500     1
    2   2500     2
    3   1500     1

任何人都有任何想法 PLEASE!..

1 个答案:

答案 0 :(得分:1)

您想在此处使用ROW_NUMBER()函数。

SELECT ID, SAL, ROW_NUMBER() OVER (PARTITION BY ID, SAL, ORDER BY SAL) AS ROW_SEQ
FROM MyTable
ORDER BY ID, SAL

通过对两个所需字段进行分区,它将按顺序为您提供每个组中的排名。

有关它的文档可以在这里找到: https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions137.htm