dense_rank()over(partition by name  order by name,city_name,scan_start_time,语音 desc) rn 这个选出的一个分组里面,值都是相同的,所以rn 值都是相同的为1,当再select 这个的时候,加条件where rn=1 ,就把所有的这组的列都输出了。我想在相同的时候,rn 都为1 的话,只输出第一列
怎么弄啊?

解决方案 »

  1.   

    dense_rank()over(partition by name order by name,city_name,scan_start_time,语音 desc) rn  
    --改为:
    row_number() over (partition by name order by name,city_name,scan_start_time,语音 desc) rn  
      

  2.   

    也可以在排序中最后加入一个随机值dbms_random.value()就行排序
    ------- 网摘
    ①ROW_NUMBER:  Row_number函数返回一个唯一的值,当碰到相同数据时,排名按照记录集中记录的顺序依次递增。  
    ②DENSE_RANK:  Dense_rank函数返回一个唯一的值,除非当碰到相同数据时,此时所有相同数据的排名都是一样的。  
    ③RANK:  Rank函数返回一个唯一的值,除非遇到相同的数据时,此时所有相同数据的排名是一样的,同时会在最后一条相同记录和下一条不同记录的排名之间空出排名。
      

  3.   

    上面的意思基本一样,Row_number 不错。嘿嘿,谢谢了