DotNet编程-星光伴我行

滴滴真谛 水滴石穿

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
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数量是已知,但可以是无序存储的=============




 
 
posted on 2009-05-01 12:30  DotNet编程  阅读(3086)  评论(1)    收藏  举报