gpt4 book ai didi

mysql - 将 Amt1 和 Amt2 值添加到上一条记录的输出列值

转载 作者:行者123 更新时间:2023-11-29 09:39:17 24 4
gpt4 key购买 nike

输入:

  dated    amount   Amt1    Amt2
1/1/2017 100 0 10
1/2/2017 100 10 0
1/4/2017 100 0 0
1/6/2017 100 300 10
1/10/2017 100 0 20
1/11/2017 100 350 650
1/12/2017 100 0 234

输出:

dated       amount  Amt1    Amt2    Output Column
1/1/2017 100 0 10 100
1/2/2017 100 10 0 110
1/4/2017 100 0 0 120
1/6/2017 100 300 10 120
1/10/2017 100 0 20 430
1/11/2017 100 350 650 450
1/12/2017 100 0 234 1450

输出列是通过将 Amt1 和 Amt2 值添加到上一条记录的输出列值来计算的。

示例:
的输出列第一条记录与金额列相同,
第二条记录将从输出列的第一条记录值和第一条记录的 Amt1 和 Amt2 中获取,即 100+0+10=110,
第三条记录来自 110+10+0=120
第四条记录来自 120+0+0=120
第五条记录来自 120+300+10=430 ...

最佳答案

此站点上有很多有关如何计算运行总计的示例,这里有一个使用变量的示例。我担心金额列的用途未定义,但此解决方案适用于为安装低于版本 8 的 mysql 提供的数据(它将适用于版本 8 或更高版本,但有更好的方法可以实现)。 @tcadidot0 不需要硬编码。

drop table if exists t;
create table t
( dated date, amount int, Amt1 int, Amt2 int);
insert into t values
(str_to_date('1/1/2017','%d/%m/%Y') , 100 , 0 , 10),
(str_to_date('1/2/2017','%d/%m/%Y') , 100 , 10 , 0),
(str_to_date('1/4/2017','%d/%m/%Y') , 100 , 0 , 0),
(str_to_date('1/6/2017','%d/%m/%Y') , 100 , 300 , 10),
(str_to_date('1/10/2017','%d/%m/%Y') , 100 , 0 , 20),
(str_to_date('1/11/2017','%d/%m/%Y') , 100 , 350 , 650),
(str_to_date('1/12/2017','%d/%m/%Y') , 100 , 0 , 234);

select t.dated,t.amount,t.amt1,t.amt2,
if(t.dated = (select min(t1.dated) from t t1),@op:=amount,
@op:=@op +
(select amt1 + amt2 from t t1 where t1.dated < t.dated order by t1.dated desc limit 1)
) op
from t
cross join (select @op:=0) o
order by dated;

+------------+--------+------+------+------+
| dated | amount | amt1 | amt2 | op |
+------------+--------+------+------+------+
| 2017-01-01 | 100 | 0 | 10 | 100 |
| 2017-02-01 | 100 | 10 | 0 | 110 |
| 2017-04-01 | 100 | 0 | 0 | 120 |
| 2017-06-01 | 100 | 300 | 10 | 120 |
| 2017-10-01 | 100 | 0 | 20 | 430 |
| 2017-11-01 | 100 | 350 | 650 | 450 |
| 2017-12-01 | 100 | 0 | 234 | 1450 |
+------------+--------+------+------+------+
7 rows in set (0.00 sec)

关于mysql - 将 Amt1 和 Amt2 值添加到上一条记录的输出列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56963879/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com