zoukankan      html  css  js  c++  java
  • 对表中数据逐行累加

    SQL2005 执行脚本
     
     
    --对表中数据逐行累加

    declare  @tempTable table(SID   
    int,  SCORE   int
    insert   @tempTable 
    select   1,                 10   union   all 
    select   2,                 20   union   all 
    select   3,                 30   union   all 
    select   4,                 40   union   all 
    select   5,                 50   
    --查看添加的数据
    select * from @tempTable
    drop table temptable
    select * into tempTable from @tempTable
    --=====================================================
    --1.使用子查询来计算累加和(非常好的一个方法)
    --=====================================================

    SELECT 
    TB1.SID, 
    SUM(TB2.SCORE) SCORE 
    FROM 
    tempTable TB1, (
    SELECT SID, SCORE 
                    FROM TempTable 
                    )TB2 
    WHERE 
    TB1.SID 
    >= TB2.SID 
    GROUP BY TB1.SID 

    --======================================
    SELECT SID,
    SUM(SCORE) 
    AS SCORE,
             ( 
                
    SELECT SUM(SCORE)
                FROM TempTable
                WHERE (SID 
    <= A.SID)
            )
            
    AS [SUM_SCORE]
    FROM TempTable 
    AS A
    GROUP BY SID
    ORDER BY SID


    --======================================
    --2.通过更新的方法实现
    --======================================
    --声明变量 
    declare   @num   
    int,@SID   int 
    set   @num   =   0 
    --开始更新,注意SQL执行更新时,是一行行更新数据.
    update   @tempTable   
    set   @num   =   case   when   @SID   <=   SID   then     @num   +   SCORE   else   SCORE   end
          @SID   
    =   SID, 
          SCORE   
    =   @num 
    --查看更新后的结果
    select   *   from   @tempTable 

    --===========注意应用此方法时,SID是有序存储的===================


    --======================================
    --3.通过查询的方法实现
    --======================================
    select 
    sum (
    case  when sid<=1 then score endas S1,
    sum (
    case  when sid<=2 then score endas S2,
    sum (
    case  when sid<=3 then score endas S3,
    sum (
    case  when sid<=4 then score endas S4,
    sum (
    case  when sid<=5 then score endas S5
    from tempTable

    --===========注意应用此方法时,SID数量是已知,但可以是无序存储的=============




     
     
  • 相关阅读:
    vb开发最全教程
    javascript javascript面向对象的理解及简单的示例
    javascript jquery封装对象时的错误,求解!我想知道为什么
    c# sql省市联动
    javascript javascript加载类似星座、血型的函数
    c# winform使用IrisSkin2换肤弹不出窗口解决方案
    access + vb + asp 遇到一些问题的总结
    ffmpeg windows下编译ffmpeg
    wffmpeg64.dll调用 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
    非托管 调用非托管资源的使用
  • 原文地址:https://www.cnblogs.com/furenjun/p/oneRowByOneRowAdd.html
Copyright © 2011-2022 走看看