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 end) as S1,
sum (case when sid<=2 then score end) as S2,
sum (case when sid<=3 then score end) as S3,
sum (case when sid<=4 then score end) as S4,
sum (case when sid<=5 then score end) as S5
from tempTable
--===========注意应用此方法时,SID数量是已知,但可以是无序存储的=============
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 end) as S1,
sum (case when sid<=2 then score end) as S2,
sum (case when sid<=3 then score end) as S3,
sum (case when sid<=4 then score end) as S4,
sum (case when sid<=5 then score end) as S5
from tempTable
--===========注意应用此方法时,SID数量是已知,但可以是无序存储的=============