Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / database / SQL-Server

Sum of previous row values in SqlServer

1.50/5 (3 votes)
19 Jun 2009CPOL 54K  
Sum of previous row values in SqlServer

Introduction

I need to write a query for sum the values with the previous row value in current row of a column. So that I have written a single query after a long googled. Here I am trying to give you what I have done.

Prerequisite

SQL Server 2005

Description

I have a table with three fields Id, Name and Mark. I have values of all fields like as follows.

Id       Name   Mark
---    -----    -----
1    aaaa    10
2    bbbb    20
3    cccc    30

Now I wants to get the results set of that table like as

Id       Name   Mark
---    -----    -----
1    aaaa    10
2    bbbb    30
3    cccc    60

So I need a single select query to do this performance. For that I have written a query using cross join.

Implementation 

To fetch the above result set I have written the code as follows by using the cross join. Just use the following code snippet to get the result set of sum of the previous rows.
 

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 

Code Snippets for Table and Query

Table 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

mark1.JPG 

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

mark2.JPG 

Conclusion 

Hence we have done the fetching the result set for sum of the previous rows in sql server.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)