# Cumulative running total

Date: Fri, 31 Oct 2008 07:48:44 -0600

Message-Id: <200810311348.m9VDmfrs001833@mail90c0.megamailservers.com>

I have the following table:

Name Null? Type

----------------- -------- ------------ A VARCHAR2(6) B VARCHAR2(6) YEAR NOT NULL NUMBER(38) PERIOD NOT NULL NUMBER(38) AMOUNT NOT NULL NUMBER(26,3)

and the following content:

SQL> select * from test where year = 2008 and a = 'BV';

**A B YEAR PERIOD AMOUNT
**
------ ------ ---------- ---------- ----------

BV BS 2008 1 100 BV AS 2008 2 200 BV BS 2008 3 300 BV AS 2008 4 400 BV BS 2008 5 500 BV AS 2008 6 600 BV BS 2008 7 700 BV AS 2008 8 800 BV BS 2008 9 900 BV AS 2008 10 1000 BV BS 2008 11 1100 BV AS 2008 12 1200 BV BS 2008 13 1300 BV AS 2008 14 1400

Note that there are gaps for each B. Here BSs are only present for odd periods, ASs only for even periods ( that was an easy way to simulate it ). What I need is a cumulative running total by period:

**A B YEAR PERIOD AMOUNT_SUM
**
------ ------ ---------- ---------- ----------

BV BS 2008 1 100 BV AS 2008 2 200 BV BS 2008 2 100 BV AS 2008 3 200 BV BS 2008 3 400 BV AS 2008 4 600 BV BS 2008 4 400 BV AS 2008 5 600 BV BS 2008 5 900 BV AS 2008 6 1200 BV BS 2008 6 900 BV AS 2008 7 1200 BV BS 2008 7 1600...

But when I use the sum() analytic function

select A

*, B*

*, year*

*, period*

*, sum(amount)*

over (partition by A, B order by A, B, PERIOD) AMOUNT_SUM

FROM test

**WHERE YEAR = 2008**

and A = 'BV'

AND PERIOD <= 7

**ORDER BY PERIOD, A, B;**I only get

**A B YEAR PERIOD AMOUNT_SUM
**
------ ------ ---------- ---------- ----------

BV BS 2008 1 100 BV AS 2008 2 200 BV BS 2008 3 400 BV AS 2008 4 600 BV BS 2008 5 900 BV AS 2008 6 1200 BV BS 2008 7 1600

i.e. for periods where B does not have a value in the base table there is no cumulative sum. I need the prior period's cumulative sum carried forward.

Anybody have a bright idea how to accomplish that in a single SQL.
The database is 9.2.0.6.

Maybe wrapping the sql in another analytic function with a window
looking back to the prior row.

Regards

Wolfgang Breitling

Centrex Consulting Corporation

http://www.centrexcc.com

-- http://www.freelists.org/webpage/oracle-lReceived on Fri Oct 31 2008 - 08:48:44 CDT