数据
a|b|c
-----
1|1|2
1|1|2
1|2|3
2|2|2希望取出格式如下a|b|c|rw
---------
1|1|2|1
1|1|2|2
1|2|3|1
2|2|2|1===============
用row_number按a分组能得出以下结果a|b|c|rw
---------
1|1|2|1
1|1|2|2
1|2|3|3
2|2|2|1但是不是我想要的,我需要按a,b,c分组

解决方案 »

  1.   

    row_number()over(partition by a order by a,b,c)
      

  2.   

    select a , b, c, row_number() over(partition by a , b, c order by a , b, c) rw from tb
      

  3.   

    create table tb(a int,b int,c int)insert into tb values(1,1,2)insert into tb values(1,1,2)insert into tb values(1,2,3)insert into tb values(2,2,2)
    select a , b, c, row_number() over(partition by a , b, c order by a , b, c) rw from tb/*
                                          A                                       B                                       C         RW
    --------------------------------------- --------------------------------------- --------------------------------------- ----------
                                          1                                       1                                       2          1
                                          1                                       1                                       2          2
                                          1                                       2                                       3          1
                                          2                                       2                                       2          1
    4 rows selected
    */drop table tb
      

  4.   


    --晕,没看到你最后一句话要按a,b,c分组
    row_number()over(partition by a,b,c order by a,b,c)
      

  5.   

    支持下顺便转下今天学习的类似函数
    row_number()
    1 2 3 4 ...
    rank()
    1 2 2 4 ...
    dense_rank()
    1 2 2 3 ...
      

  6.   


    既然你已经晓得了row_number 
    row_number() over(partition by a,b,c order by a,b,c)
      

  7.   

    谢谢  之前我写错了 写成partition by (a,b,c)结果运行提示语法错误 导致我以为row_number不能按多字段分组
      

  8.   

    数据
    a|b|c
    -----
    1|1|2
    1|1|2
    1|2|3
    2|2|2如何写才能得到如下格式呢?a|b|c
    -----
    1|1|3
    2|2|2