zoukankan      html  css  js  c++  java
  • 通过行更新的方法实现按行累计(可分类目累计)

     1 --======================================  
     2 --通过行更新的方法实现按行累计(可分类目累计)  
     3 --created by 倪斌斌 
     4 --datetime   2020-03-20     
     5 --======================================  
     6 
     7 --SID 累加的排序字段(原表的数据可以是无序的)
     8 --ItemId 累加的类目,如果没有类目字段,就是整表按顺序累计
     9 --SCORE 累加字段
    10 declare  @tempTable table(SID   int,ItemId int,  SCORE   int)   
    11 insert   @tempTable   
    12 select   3,      1000,           10   union   all   
    13 select   4,      1000,           20   union   all   
    14 select   2,      1000,           30   union   all   
    15 select   1,      1001,           40   union   all   
    16 select   5,      1001,           50     
    17 --查看添加的数据  
    18 select * from @tempTable ORDER BY SID 
    19 --原表数据不能保证行顺序已经按类目按排序字段存储,
    20 --此处通过ROW_NUMBER处理后,行顺序自动被调整成符合可逐行累加的顺序存入待行累计的临时表
    21 select *,ROW_NUMBER() OVER(ORDER BY ItemId,SID) as FINDEX into #tempTable from @tempTable  
    22 --======================================  
    23 
    24 --声明变量   
    25 declare   @score   int,@itemId   int   
    26 set   @score    =   0   
    27 SET      @itemId    =    0
    28 --开始更新,注意SQL执行更新时,是按行按存储的顺序更新数据的.  
    29 update   #tempTable     
    30 set   @score   =   case   when   @itemId   =   ItemId   then     @score   +   SCORE   else   SCORE   end,   
    31       @itemId  =   ItemId,
    32       SCORE    =   @score   
    33 --查看更新后的结果  
    34 select   *   from   #tempTable 
    35  
    36 --最终可以再按照唯一性字段与原表数据关联反写累计字段的值,比如此处可通过字段SID关联
    37 update t1 set t1.SCORE=t2.SCORE from @tempTable t1
    38 inner join #tempTable t2 on t1.SID=t2.SID
    39 
    40 select * from @tempTable ORDER BY SID
    41 
    42 drop table #tempTable
    43 --======================================  
  • 相关阅读:

    每日小练习
    完数
    6.13的练习
    字典
    sql server多条记录同时插入一张表
    sql server从表到表——复制,备份
    Bootstrap关于row
    Bootstrap 关于标签,徽章,巨幕,页头,缩略图,自定义内容的使用
    Bootstrap 关于分页的使用
  • 原文地址:https://www.cnblogs.com/nikyxxx/p/12529703.html
Copyright © 2011-2022 走看看