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