Wednesday, February 22, 2017

To Populate Running (Cumulative Product) in SQL

To Populate Running (Cumulative Product)

If OBJECT_ID('tempdb..#Scores') IS Not NUll
Drop Table #Scores
Go
If OBJECT_ID('tempdb..#Scores') IS Not NUll
Drop Table #Scores
Go

CREATE TABLE #Scores
(
ID INT IDENTITY,
Score INT
)
GO -- Load sample data into table
INSERT INTO #Scores( Score)
SELECT   1 UNION ALL
SELECT   2 UNION ALL
SELECT   3 UNION ALL
SELECT   4 UNION ALL
SELECT   5 UNION ALL
SELECT   6 UNION ALL
SELECT   7
GO


SELECT O.Id
        ,(  SELECT EXP ( SUM ( LOG (I.Score) ) )
             FROM #Scores I
             WHERE
              I.Id <= O.Id
         ) as RunningProduct
FROM #Scores O

To Populate Based on a Category Column

If OBJECT_ID('tempdb..#Scores') IS Not NUll
Drop Table #Scores
Go

CREATE TABLE #Scores
(
ID INT IDENTITY,
Category Varchar(5),
Score INT
)
GO -- Load sample data into table
INSERT INTO #Scores( Score,Category)
SELECT   1,'A' UNION ALL
SELECT   2,'A'  UNION ALL
SELECT   3,'A' UNION ALL
SELECT   4,'B'  UNION ALL
SELECT   5,'B'  UNION ALL
SELECT   6,'B'  UNION ALL
SELECT   7,'C'
GO


SELECT O.Id,O.Category
        ,(  SELECT EXP ( SUM ( LOG (I.Score) ) )
             FROM #Scores I
             WHERE I.Category = O.Category AnD
              I.Id <= O.Id
         ) as RunningProduct
FROM #Scores O


No comments:

Post a Comment