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