SqlServer 中上一行的值之和






1.50/5 (3投票s)
SqlServer 中上一行的值之和
引言
我需要编写一个查询,将一列的当前行值与前一行值的总和相加。为此,我经过长时间的谷歌搜索后写了一个查询。在这里我尝试向您展示我所做的事情。
先决条件
SQL Server 2005
描述
我有一个包含三个字段的表:Id、Name 和 Mark。所有字段的值如下所示。
Id Name Mark
--- ----- -----
1 aaaa 10
2 bbbb 20
3 cccc 30
现在我想要得到该表的结果集,如下所示:
Id Name Mark
--- ----- -----
1 aaaa 10
2 bbbb 30
3 cccc 60
因此,我需要一个单独的 SELECT 查询来以高性能完成此操作。为此,我使用 CROSS JOIN 编写了一个查询。
实施
为了获取上述结果集,我使用 CROSS JOIN 编写了以下代码。只需使用以下代码片段即可获得前几行总和的结果集。
select a.Id, a.Name, sum(b.Mark) as Mark
from Marks a cross join Marks b
where b.Id <= a.Id
group by a.Id, a.Name
表和查询的代码片段
表名:Marks
CREATE TABLE [dbo].[Marks](
[Id] [bigint] NOT NULL,
[Name] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[Mark] [bigint] NOT NULL
) ON [PRIMARY]
select * from Marks
select a.Id, a.Name, sum(b.Mark) as Mark
from Marks a cross join Marks b
where b.Id <= a.Id
group by a.Id, a.Name
结论
因此,我们完成了在 sql server 中获取前几行总和的结果集。