对表中数据逐行累加
luyued 发布于 2011-03-20 20:35 浏览 N 次
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数量是已知,但可以是无序存储的=============
--------------------------
新闻:盖茨接班人称微软将大力推进网络战略
网站导航: 博客园首页 新闻 .NET频道 社区 博问 闪存 找找看
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数量是已知,但可以是无序存储的=============
--------------------------
新闻:盖茨接班人称微软将大力推进网络战略
网站导航: 博客园首页 新闻 .NET频道 社区 博问 闪存 找找看
相关资讯
- 07-01· 禁教唐诗算术能还幼儿快
- 07-01· 2011年06月17日
- 07-01· 唐诗宋词英译:李商隐 筹
- 07-01· 仿评《唐诗1000首》第186首
- 07-01· 没事干的时候背背唐诗吧
- 07-01· [转载]唐诗中“斜”字该读
- 07-01· 湖南醴陵瓷业转型升级
- 07-01· 奇瑞风云2两厢黑色|2010款
- 07-01· 摩根士丹利华鑫摩根士丹
- 07-01· 摩根士丹利华鑫近期优选
图文资讯
最新资讯
- 07-01· 中金投行部大摩出售中金
- 07-01· 摩根士丹利招聘6月2日【实
- 07-01· 营养防病圣典
- 07-01· 《博伽梵歌原意》之第十
- 07-01· [不错]斑斓圣典---减肥中常
- 07-01· 武乐圣典《太极武当》:武
- 07-01· 铁血英雄-现阶段战功牌兑
- 07-01· 2011年06月10日【原创】南歌
- 07-01· 【淘宝网信息】- 2010年的
- 07-01· 深圳品牌女装有哪些?