gpt4 book ai didi

Mysql - 金额之间的平衡

转载 作者:太空宇宙 更新时间:2023-11-03 12:07:27 26 4
gpt4 key购买 nike

我试图在每一行的数量之间取得平衡。基本上需要加上或减去之前记录字段的值。

表:

+------+------------+---------+---------+
| id | expiration | amount | is_paid |
+------+------------+---------+---------+
| 4 | 2014-09-02 | 100.00 | 1 |
| 10 | 2014-09-03 | 200.00 | 1 |
| 35 | 2014-09-03 | 10.32 | 0 |
| 2 | 2014-09-03 | -32.00 | 1 |
| 1 | 2014-09-04 | -50.00 | 0 |
| 200 | 2014-09-04 | 400.00 | 1 |
| 30 | 2014-09-05 | 100.00 | 1 |
+------+------------+---------+---------+

我想创建一个 View 来计算设置为 is_paid=1 的字段中和到期日期之间的余额。例如:

+------+------------+---------+---------+---------+
| id | expiration | amount | is_paid | balance |
+------+------------+---------+---------+---------+
| 4 | 2014-09-02 | 100.00 | 1 | 100.00 |
| 10 | 2014-09-03 | 200.00 | 1 | 300.00 |
| 35 | 2014-09-03 | 10.32 | 0 | 300.00 |
| 2 | 2014-09-03 | -30.00 | 1 | 270.00 |
| 1 | 2014-09-04 | -50.00 | 0 | 270.00 |
| 200 | 2014-09-04 | 400.00 | 1 | 670.00 |
| 30 | 2014-09-05 | 100.00 | 1 | 770.00 |
+------+------------+---------+---------+---------+

帮帮我!!

最佳答案

为什么需要将其放入 View 中?这是将为您进行计算的选择

SELECT * , 
@a := if(is_paid = 1, @a + amount, @a) as balance
FROM table
CROSS JOIN(SELECT @a := 0)t

DEMO

这是它如何工作的细目......

从表格中取出你想要的,还包括一个名为余额的新列..
这里的余额是前一行的余额加上当前金额,如果它被标记为已支付 is_paid...但是如果它没有支付那么它只是重复余额。

if (condition, true / then, false / else)

因此,如果 is_paid,则将之前的余额与当前余额相加(@a 包含之前的行余额,直到您使用下一行中的 if 语句重置它)如果未支付,则只需重复 @a 余额

希望对你有帮助

关于Mysql - 金额之间的平衡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25799761/

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