--> 生成测试数据: @T DECLARE @T TABLE (id INT,value INT) INSERT INTO @T SELECT 1,10 UNION ALL SELECT 2,20 UNION ALL SELECT 3,30 UNION ALL SELECT 4,40--SQL查询如下:SELECT id,[sum]=(SELECT SUM(value) FROM @T WHERE id<=A.id) FROM @T AS A SELECT A.id,SUM(B.value) AS [sum] FROM @T AS A LEFT JOIN @T AS B ON A.id>=B.id GROUP BY A.id
SELECT id,[sum]=(SELECT SUM(value) FROM @T WHERE id<=A.id) FROM @T AS A
你的代码有点画蛇添足 SELECT id,[sum]=(SELECT SUM(value) FROM @T WHERE id <=A.id) FROM @T AS A 已经可以得到想要的结果啦
你的代码有点画蛇添足 SELECT id,[sum]=(SELECT SUM(value) FROM @T WHERE id <=A.id) FROM @T AS A 已经可以得到想要的结果啦
drop table tb
go
create table tb([id] varchar(10),[value] int)
insert tb select 1,10
insert tb select 2,20
insert tb select 3,30
insert tb select 4,40
select id,[valuesum]=(select sum([value]) from tb where id<=t.id) from tb t/*
id valuesum
---------- -----------
1 10
2 30
3 60
4 100(4 行受影响)
*/
select id,(select sum(value) from T a where a.id<=T.id)
from T
-- Author: liangCK 小梁
---------------------------------
--> 生成测试数据: @T
DECLARE @T TABLE (id INT,value INT)
INSERT INTO @T
SELECT 1,10 UNION ALL
SELECT 2,20 UNION ALL
SELECT 3,30 UNION ALL
SELECT 4,40--SQL查询如下:SELECT
id,[sum]=(SELECT SUM(value) FROM @T WHERE id<=A.id)
FROM @T AS A
SELECT
A.id,SUM(B.value) AS [sum]
FROM @T AS A
LEFT JOIN @T AS B
ON A.id>=B.id
GROUP BY A.id
SELECT
id,[sum]=(SELECT SUM(value) FROM @T WHERE id<=A.id)
FROM @T AS A
id,[sum]=(SELECT SUM(value) FROM @T WHERE id <=A.id)
FROM @T AS A 已经可以得到想要的结果啦
你的代码有点画蛇添足 SELECT
id,[sum]=(SELECT SUM(value) FROM @T WHERE id <=A.id)
FROM @T AS A 已经可以得到想要的结果啦