SELECT  *
FROM    ( SELECT    row_number() OVER ( PARTITION BY billid, mxitemno ORDER BY itemno ) rn ,
                    billid ,
                    itemno ,
                    mxitemno
          FROM      mnf_manuorderdetail
        ) a

解决方案 »

  1.   

    “条件: 当billid=billid 时 , 当itemno不相同时,  vipitemno按顺序排列”
    这个地方是不是描述不正确,应该是“条件: 当billid=billid 时 , 当mxitemno不相同时,  vipitemno按顺序排列”吧。
    下面的语句就是按照mxitemno实现的,方法都差不多,如果不是,自己对字段修改一下就可以了。
    利用PARTITION BY应该可以实现你想要的结果。
      

  2.   

    利用PARTITION BY应该可以实现你想要的结果。  谢谢你的热心的回复,请问能不能用update 去更新呢???
      

  3.   

    利用PARTITION BY应该可以实现你想要的结果。  谢谢你的热心的回复,请问能不能用update 去更新呢???直接尝试一下用 update 试一下不就知道了?
      

  4.   

    不是很明白这个UPDATE应该如何写
      

  5.   

    更新语句可以试一下下面的sqlupdate mnf_manuorderdetail set vipitemno=a.rId  from (select *,row_number() over(partition by billid,mxitemno order by itemno) as rId from mnf_manuorderdetail) as a where billid=a.billid and itemno=a.itemno最后,查询一下。
    select * from mnf_manuorderdetail