根据模式分配唯一的行号

问题描述 投票:0回答:1

我有一个包含以下字段的表格

CourseID  Amount17 Amount15 Amount13
100152  3000    2400    0
100204  3000    2400    0
100066  3000    2400    0
100066  3000    2400    1800
100067  3000    2400    1800
100343  3000    2400    1800
100126  3000    2400    1800
100022  3000    3000    0
100344  3000    3000    0
100050  3000    3000    0
100078  3000    3000    0

我想把匹配的三列金额分组在一个列表中。我希望的输出是

 CourseID  Amount17 Amount15 Amount13   CourseList
    100152  3000    2400    0            1
    100204  3000    2400    0            1
    100066  3000    2400    0            1
    100066  3000    2400    1800         2
    100067  3000    2400    1800         2
    100343  3000    2400    1800         2
    100126  3000    2400    1800         2
    100022  3000    3000    0            3
    100344  3000    3000    0            3
    100050  3000    3000    0            3
    100078  3000    3000    0            3

我试过用row_number over(order by),但似乎没有用。尝试使用DenseRank,但没有用。

sql oracle pattern-matching row-number
1个回答
1
投票

我想你只是想 dense_rank():

select t.*,
       dense_rank() over (order by amount17, amount15, amount13) as courselist
from t;
© www.soinside.com 2019 - 2024. All rights reserved.