Sql 逐年连续计算列中的数据

Sql 逐年连续计算列中的数据,sql,oracle,oracle12c,Sql,Oracle,Oracle12c,我需要你的帮助 我需要像这样计算我专栏中的数据 如何计算列初始余额中的数据 在“初始余额”列中,数据按净额01计算,直到净额04每年连续计算 目前,我在oracle 12c上工作。有什么功能可以实现这一点吗 非常感谢您的帮助。使用带总和分析功能的合并语句: Oracle 11g R2架构设置: 问题1: : 问题2: : 欢迎来到SO。在发布问题之前,请先查看和。另外,请以格式化文本形式发布数据, CREATE TABLE table_name ( year, initial_balance,

我需要你的帮助 我需要像这样计算我专栏中的数据

如何计算列初始余额中的数据

在“初始余额”列中,数据按净额01计算,直到净额04每年连续计算

目前,我在oracle 12c上工作。有什么功能可以实现这一点吗

非常感谢您的帮助。

使用带总和分析功能的合并语句:

Oracle 11g R2架构设置:

问题1:

: 问题2:

:


欢迎来到SO。在发布问题之前,请先查看和。另外,请以格式化文本形式发布数据,
CREATE TABLE table_name ( year, initial_balance, net_01, net_02, net_03, net_04 ) AS
SELECT 2013, 0, 100, 100, 100, 100 FROM DUAL UNION ALL
SELECT 2014, 0, -200, 100, 100, 100 FROM DUAL UNION ALL
SELECT 2015, 0, -300, 100, 100, 100 FROM DUAL UNION ALL
SELECT 2016, 0, 0, 0, 0, 0 FROM DUAL UNION ALL
SELECT 2017, 0, 0, 0, 0, 0 FROM DUAL;
MERGE INTO table_name dst
USING (
  SELECT ROWID rid,
         SUM( net_01 + net_02 + net_03 + net_04 )
           OVER (
             ORDER BY year
             ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING
           ) AS initial_balance
  FROM   table_name
) src
ON ( dst.ROWID = src.RID )
WHEN MATCHED THEN
  UPDATE SET
    initial_balance = COALESCE( src.initial_balance, 0 )
SELECT * FROM table_name
| YEAR | INITIAL_BALANCE | NET_01 | NET_02 | NET_03 | NET_04 |
|------|-----------------|--------|--------|--------|--------|
| 2013 |               0 |    100 |    100 |    100 |    100 |
| 2014 |             400 |   -200 |    100 |    100 |    100 |
| 2015 |             500 |   -300 |    100 |    100 |    100 |
| 2016 |             500 |      0 |      0 |      0 |      0 |
| 2017 |             500 |      0 |      0 |      0 |      0 |