select  str2,dense_RANK() over (partition by str2 order by str2)
  from XGS_REGISTER 
 where  status<=90
   and ACTION >= 0
   and ACTION <= 29
   and status >= 60 
开始的几条记录如下:
1 f 1
2 longxingtianxia 1
3 mianhuatang 1
4 mianhuatang 1
5 mianhuatang 1
6 mianhuatang 1
7 mianhuatang 1
8 mianhuatang 1
9 mianhuatang 1我也要的效果是: 在action >=29 与action<=60的条件,str2只有几十个不同值,但str2的这几十个值,其中每个值都有好多 
,我想找出这几十个不同的str2 还有个问题 为什么dense_RANK() 出来的全会是1 ,应该根据str2不同,就会有不同值 

解决方案 »

  1.   

    select  str2,dense_RANK() over (partition by 1 order by str2)
      from XGS_REGISTER 
     where  status<=90
       and ACTION >= 0
       and ACTION <= 29
       and status >= 60 换成这样子!
      

  2.   

    还真改变了,这是为什么  partition str2 只对str2这个字面值排序吗还有要抽出不同的str2有什么方法
      

  3.   

    partition by str2 
    这里有问题。按str2分组,又按str2排序dense_rank,所以都为1
    将这个条件的str2换上别的字段,如果不需要的话,可以去掉不写。按卡西欧的写成1也一样
      

  4.   

    我之前在别的地方用,好像也问题啊!
    按str2分组,又按str2排序dense_rank,所以都为1
    这个怎么理解
      

  5.   

    1 f 1 
    2 longxingtianxia 1 
    3 mianhuatang 1 
    4 mianhuatang 1 
    5 mianhuatang 1 
    6 mianhuatang 1 
    7 mianhuatang 1 
    8 mianhuatang 1 
    9 mianhuatang 1 你将dense_rank改成row_number看看。也许就能理解了。这里有一组相同的str2 :mianhuatang ,并列第一,用dense_rank就都是1了。或者将order by str2改成order by rownum.如果需要按str2分组的话