比如有一table 如下:
ID a
1 3
2 4
3 4
4 7
5 7
我现在想得到如下的效果
ID a b
1 3 3
2 4 7
3 4 11
4 7 18
5 7 25就是b列是对a 依次累加
这个sql语句应该如何写??高手指教
ID a
1 3
2 4
3 4
4 7
5 7
我现在想得到如下的效果
ID a b
1 3 3
2 4 7
3 4 11
4 7 18
5 7 25就是b列是对a 依次累加
这个sql语句应该如何写??高手指教
解决方案 »
- SQL如何查询表1中的数据在表2中没有
- 统计字段为编码维护的字段如何统计?
- sql raiserror具体有什么作用
- 好吧,我是来发牢骚的,装VS然后再装SQL EXPRESS怎么那么难
- MS Sql Server 2008 占用CPU过高导致服务器死机
- 如何返回一个字符串中符合某种条件的字符的个数?
- 批量修改数据库中某个字段中数据的前几位
- mssql2000 别名字段的筛选问题
- 求救:求一组合查询的问题
- 如何把一个动态的*dbf表用vb语言连接到sql server数据库中,使其在sql server数据库中也能够动态的显示!
- 请问嵌套的exists该如何理解
- 如何通过客户端在DOS下修改服务器上SQL 2000表的东西
ID,
a,
(SELECT SUM(a) FROM tb WHERE ID<=A.ID) AS b
FROM tb AS A
insert into tb values(1 ,3 )
insert into tb values(2 ,4 )
insert into tb values(3 ,4 )
insert into tb values(4 ,7 )
insert into tb values(5 ,7 )
goselect m.*, a + isnull((select sum(a) from tb where id < m.id),0) b from tb mdrop table tb/*
ID a b
----------- ----------- -----------
1 3 3
2 4 7
3 4 11
4 7 18
5 7 25(所影响的行数为 5 行)
*/
go
insert aa select 1,3
insert aa select 2,4
insert aa select 3,4
insert aa select 4,7
insert aa select 5,7
go
select ID,a,(select sum(a) from aa where ID<=a.ID) b from aa a
go
--结果
/*
ID a b
1 3 3
2 4 7
3 4 11
4 7 18
5 7 25*/
select ID,a,(select sum(a) from Table where ID<=T.ID) b from Table T
ID,
a,
(SELECT SUM(a) FROM tb WHERE ID<=A.ID) AS b
FROM tb AS A
create table tb(ID int,a int)
insert into tb values(1 ,3 )
insert into tb values(2 ,4 )
insert into tb values(3 ,4 )
insert into tb values(4 ,7 )
insert into tb values(5 ,7 )
--方法1-------------------------------------
select m.*, a + isnull((select sum(a) from tb where ID < m.ID),0) b from tb m
--方法2-------------------------------------
select ID,a,(select sum(a) from tb where ID<=a.ID) b from tb a
--结果--------------------------------------
ID a b
----- ----- -----
1 3 3
2 4 7
3 4 11
4 7 18
5 7 25
--顺便练习一下APPLY的用法
DECLARE @t TABLE
(
ID VARCHAR(10),
a INT
)
INSERT @t
SELECT '1',3
UNION ALL SELECT '2', 4
UNION ALL SELECT '3', 4
UNION ALL SELECT '4', 7
UNION ALL SELECT '5', 7
SELECT * FROM @t t1 OUTER APPLY (SELECT SUM(ISNULL(a,0)) AS b FROM @t WHERE id<=t1.id) t2
INSERT @t
SELECT '1',3
UNION ALL SELECT '2', 4
UNION ALL SELECT '3', 4
UNION ALL SELECT '4', 7
UNION ALL SELECT '5', 7 select id, a, (SELECT SUM(ISNULL(a,0)) AS b FROM @t WHERE id<=t1.id) as b from @t t1
/*
(5 row(s) affected)
id a b
---------- ----------- -----------
1 3 3
2 4 7
3 4 11
4 7 18
5 7 25
*/