By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
CREATE TABLE table_name ( contract_date, settlement_price ) AS
SELECT DATE '2020-10-01', 50 FROM DUAL UNION ALL
SELECT DATE '2020-11-01', 10 FROM DUAL UNION ALL
SELECT DATE '2020-12-01', 20 FROM DUAL UNION ALL
SELECT DATE '2021-01-01', 30 FROM DUAL UNION ALL
SELECT DATE '2021-02-01', 50 FROM DUAL;
5 rows affected
SELECT contract_date,
settlement_price,
CASE COUNT(*) OVER (
ORDER BY contract_date ROWS BETWEEN 1 FOLLOWING AND 2 FOLLOWING
)
WHEN 2
THEN SUM( settlement_price ) OVER (
ORDER BY contract_date ROWS BETWEEN 1 FOLLOWING AND 2 FOLLOWING
)
END AS sum_column
FROM table_name;
CONTRACT_DATE | SETTLEMENT_PRICE | SUM_COLUMN |
---|---|---|
01-OCT-20 | 50 | 30 |
01-NOV-20 | 10 | 50 |
01-DEC-20 | 20 | 80 |
01-JAN-21 | 30 | null |
01-FEB-21 | 50 | null |
SELECT contract_date,
settlement_price,
LEAD( settlement_price, 1 , NULL ) OVER ( ORDER BY contract_date )
+ LEAD( settlement_price, 2 , NULL ) OVER ( ORDER BY contract_date )
AS sum_column
FROM table_name;
CONTRACT_DATE | SETTLEMENT_PRICE | SUM_COLUMN |
---|---|---|
01-OCT-20 | 50 | 30 |
01-NOV-20 | 10 | 50 |
01-DEC-20 | 20 | 80 |
01-JAN-21 | 30 | null |
01-FEB-21 | 50 | null |