SQL SERVER 函数ROW_NUMBER() 应用

应用场景:

1.业务要求SQL查询结果中输出含有“序号”、“行号”。

2.数据表中某个空白字段需要用流水号填充。

以上场景时,可以使用SQL SERVER 的函数ROW_NUMBER()来实现,首先了解下这个函数

   ROW_NUMBER() OVER( [排序规则] )

按照函数中英文字面理解,返回 数据记录在【排序规则】下所在的序号。

排序规则部分:PARTITION BY COLUMN ORDER BY COLUMN

  ORDER BY COLUMN 是必须的,也容易理解,就是排序。

  PARTITION BY COLUMN  是可选的,类似于对数据分组。

完整函数:

  ROW_NUMBER() OVER( PARTITION BY 字段1 ORDER BY 字段2 )

就是  返回的数据记录ROW_NUMBER() OVER( 序号,是将数据结果先按照“字段1”分组,然后每组数据中,再按照“字段2”排序产生的序号。

应用一举例:

应用二举例:

  目的:表xt_xmb中的空白字段ecode,需要为全表每条记录添加一个流水序号,从10000开始,必须按照字段yqdh和xmdh排序。

UPDATE A SET A.ecode=B.CODE
FROM xt_xmb A 
JOIN (
    SELECT (ROW_NUMBER() OVER (ORDER BY YQDH,XMDH)+10000) AS CODE,YQDH,XMDH,XMBH FROM xt_xmb
) B ON A.yqdh=B.yqdh AND A.xmdh=B.xmdh

 

posted on 2017-09-15 15:58  ThinPro  阅读(207)  评论(0编辑  收藏  举报

导航