如何在查询列中获取序列

how to get sequence in the query for a column

我有几条记录如下:

column_1      column_2       column_3   column_4
abc            xyz            sra         123
abc            xyz            sra         234
def            gth            har         678
def            gts            har         965
def            gts            har         376
xyz            wxyz            sra         567
xyz            wxyz            sra         734
abc            xyz            har         26
abc            xyz            har         24

我希望查询显示如下,使用 pl sql 分析函数第 5 列应生成序列:

column_1      column_2       column_3   column_4  coulmn_5
abc            xyz            sra         123       1
abc            xyz            sra         234       1
abc            xyz            har         26        2
abc            xyz            har         24        2
def            gth            har         678       3
def            gts            har         965       3
def            gts            har         376       3
xyz           wxyz            sra         567       4
xyz           wxyz            sra         734       4

你没有解释你想要什么,所以我不得不猜测。

select column_1, 
       column_2,
       column_3,
       column_4,
       dense_rank() over (order by column_1, column_3) as column_5
from the_table
order by column_1, column_4

这里假定示例数据中的 abdcabcd 是错字,实际上应该是 abcd 的两倍。如果这不是拼写错误,那么 window 函数可能应该更改为使用 order by column_3

试试这个查询:

SELECT column_1,column_2,column_3,column_4,DENSE_RANK() WITHIN GROUP 
   (PARTITION BY column_1 ORDER BY column_1 ) "column_5"