![]() |
|
Archives of the TeradataForumMessage Posted: Mon, 10 Mar 2008 @ 22:36:38 GMT
Hello, I have a question on how to handle NULLs enclosed by real data in OLAP function, specifically cumulative sum. Here is my original data:
Transid customer_id amt
176265745 5545645555156058 NULL
176294417 5545645555156058 NULL
176315567 5545645555156058 -42.51
176353072 5545645555156058 NULL
176356373 5545645555156058 -19.99
I use OLAP function to compute cumulative sum:
SELECT
-- Sender Gross CB
zeroifnull(COUNT(amt) OVER (PARTITION BY s.customer_id
ORDER BY s.transid ASC
ROWS BETWEEN UNBOUNDED PRECEDING AND
CURRENT ROW
)
)
AS cumulative_cnt
,zeroifnull(SUM(amt) OVER (PARTITION BY s. customer _id
ORDER BY s.transid ASC
ROWS BETWEEN UNBOUNDED PRECEDING AND
CURRENT ROW
)
)
AS cumulative_amt
which produces the dataset below:
Transid customer_id Cumulative_cnt Cumulative_amt
176265745 5545645555156058 0 0.00
176294417 5545645555156058 0 0.00
176315567 5545645555156058 1 -42.51
176353072 5545645555156058 1 -42.51
176356373 5545645555156058 2 -62.50
But I need to exclude a second from the bottom row with amt = NULL with transid = 176353072 but keep the transaction id in the result.
Transid customer_id Cumulative_cnt Cumulative_amt
176265745 5545645555156058 0 0.00
176294417 5545645555156058 0 0.00
176315567 5545645555156058 1 -42.51
176353072 5545645555156058 0 0
176356373 5545645555156058 2 -62.50
I achieve desired result by separating datasets based on IS NULL and IS NOT NULL, processing them separately and then UNION, but it seems not really elegant. I am wondering is there a way to handle this logic inside OLAP function? Thanks a lot in advance, Peter.
| ||||||||||||||||||||||||||||||||||||||||||||||||
| | ||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||||||||||
| Copyright 2016 - All Rights Reserved | ||||||||||||||||||||||||||||||||||||||||||||||||
| Last Modified: 15 Jun 2023 | ||||||||||||||||||||||||||||||||||||||||||||||||