Sql 是否可以检查select脚本中的行是否具有相同的值/级别?

Sql 是否可以检查select脚本中的行是否具有相同的值/级别?,sql,oracle-sqldeveloper,Sql,Oracle Sqldeveloper,我的目标是找到排序相同的行,并用重复项占用的行数替换排序 如果我有这个结果: points place 1 300 1 2 267 2 3 245 3 4 245 3 5 240 5 我希望是这样 points place 1 300 1 2 267 2 3 245 3-4 4 245 3-4 5

我的目标是找到排序相同的,并用重复项占用的行数替换排序

如果我有这个结果:

    points  place
1   300         1
2   267         2
3   245         3
4   245         3
5   240         5
我希望是这样

    points  place
1   300         1
2   267         2
3   245         3-4
4   245         3-4
5   240         5
那么,如何检查行的位置/点是否具有相同的值,并在其周围构建案例?到 让它更常见:有没有一种方法可以检查两行是否包含相同的值而不给出固定值
价值因此,类似column1=column1而非column1=3的逻辑是使用窗口函数来确定给定
分数
place
值的计数。如果有,则不需要连字符:

select points,
       (case when count(*) over (partition by points) = 1
             then place
             else place || '-' || place || count(*) over (partition by points) - 1
        end) as new_place
from t;
这假设
place
是一个字符串——但这可能不是真的。因此,您需要进行一些转换:

select points,
       (case when count(*) over (partition by points) = 1
             then to_char(place)
             else place || '-' || place || count(*) over (partition by points) - 1
        end) as new_place
from t;

实际上,不需要
min()
位置,因为它在每一行上都是相同的,所以:

逻辑是使用窗口函数来确定给定
分数的
place
值的计数。如果有,则不需要连字符:

select points,
       (case when count(*) over (partition by points) = 1
             then place
             else place || '-' || place || count(*) over (partition by points) - 1
        end) as new_place
from t;
这假设
place
是一个字符串——但这可能不是真的。因此,您需要进行一些转换:

select points,
       (case when count(*) over (partition by points) = 1
             then to_char(place)
             else place || '-' || place || count(*) over (partition by points) - 1
        end) as new_place
from t;

实际上,不需要
min()
位置,因为它在每一行上都是相同的,所以:

在else部分做了一些调整,因为我得到了“ORA-01722:invalid number”错误。当我把它改编成(place | |'-'| | |(place+(count(*)over(partition by place))-1)时,它工作了,除了它工作之外!谢谢@无论什么哎呀。一个
+
代替了
|
。我一直不得不修改答案,因为我认为第一列是数据的一部分。在其他部分我做了一些调整,因为我得到了“ORA-01722:无效数字”错误。当我把它改编成(place | |'-'| | |(place+(count(*)over(partition by place))-1)时,它工作了,除了它工作之外!谢谢@无论什么哎呀。一个
+
代替了
|
。我一直不得不修改答案,因为我认为第一列是数据的一部分。