如何在列的查询中获取序列

时间:2015-02-03 18:54:33

标签: sql oracle plsql

我的记录如下:

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

2 个答案:

答案 0 :(得分: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的两倍。如果这不是拼写错误,那么窗口函数可能应该更改为使用order by column_3

答案 1 :(得分:0)

尝试此查询:

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