SQLUSA.com
SQL SERVER 2008 GRAND SLAM
FREE TRIAL  CLICK HERE TO ORDER  SEARCH
SQL JOBS SQL Server Training Scripts JOB BANK
  SQL Server 2008 Training Scripts  
  SQL Server 2005 Training Scripts  
News SQL Server Articles SQL Format

How to architect running total using cursor?
Contributed by Paul Nielsen, www.sqlserverbible.com

Execute the following T-SQL script in Query Editor to demonstrate the usage of cursor for running total generation.

Generally this solution performs better than applying correlated subquery.

USE AdventureWorks

 

ALTER TABLE Sales.SalesOrderHeader

  ADD CumulativeTotal MONEY NOT NULL

  CONSTRAINT dfSalesOrderHeader DEFAULT(0)

go --

 

 

 

SET NoCount ON

DECLARE

  @SalesOrderID INT,

  @TotalDue MONEY,

  @CumulativeTotal MONEY

 

SET @CumulativeTotal = 0

  -- 1) set up the cursor     

  DECLARE cRun CURSOR FAST_FORWARD

    FOR

      SELECT SalesOrderID, TotalDue

        FROM Sales.SalesOrderHeader

        ORDER BY OrderDate, SalesOrderID

 

   -- 2) open the cursor

  OPEN cRun

 

  FETCH cRun INTO @SalesOrderID, @TotalDue  -- prime the cursor

  WHILE @@Fetch_Status = 0

    BEGIN

      SET @CumulativeTotal = @CumulativeTotal + @TotalDue

      UPDATE Sales.SalesOrderHeader

        SET CumulativeTotal = @CumulativeTotal

        WHERE SalesOrderID = @SalesOrderID   

      FETCH cRun INTO @SalesOrderID, @TotalDue  -- fetch next

    END

  CLOSE cRun

 

  DEALLOCATE cRun

go --

 

 

SELECT SalesOrderID, TotalDue, CumulativeTotal

  FROM Sales.SalesOrderHeader

  ORDER BY OrderDate, SalesOrderID

go --

 

ALTER TABLE Sales.SalesOrderHeader

  DROP CONSTRAINT dfSalesOrderHeader

 

ALTER TABLE Sales.SalesOrderHeader

  DROP COLUMN CumulativeTotal

 

 


Order SQL 2008 GRAND SLAM Today!
SQLUSA.com Home Page
SQL Server Training at www.sqlusa.com.
SQL Server 2008 Video Training at www.sqlusa.com.
SQL Server 2005 Training Videos at www.sqlusa.com.
Microsoft SQL Server 2000 Training Videos at www.sqlusa.com.

FREE SQL & Business Intelligence / OLAP Short Videos on YOUTUBE.com

Microsoft Community Contributor 2011
Invest in Your SUCCESS!

Search SQLUSA FREE SQL Server Articles & FREE T-SQL Scripts


Copyright 2005-2011, SMI Corp. All Rights Reserved.

SQL Server 2012 is a program product of Microsoft Corporation.
SQL Server 2008 is a program product of Microsoft Corporation.
SQL Server 2005 is a program product of Microsoft Corporation.
SQL Server 2000 is a program product of Microsoft Corporation.