gpt4 book ai didi

php - 选择记录在同一张表中的汇款和收款的差异

转载 作者:可可西里 更新时间:2023-11-01 08:45:04 25 4
gpt4 key购买 nike

所以,我有这个问题:

SELECT curr, from, to, SUM(amount) AS total
FROM transfer
GROUP BY curr, from, to
ORDER BY curr, from

结果是:

| curr | from | to | total   |

| USD | A | B | 1200.00 |
| USD | B | A | 500.00 |

我想要的是:

| curr | from | to | total  |    
| USD | B | A | 700.00 |

A给B发了1200,B给A发了500,所以B还欠A 700。

换句话说,我想要的是按当前、从和到对结果进行分组时的结果之间的差异。请记住,只有值“A”或“B”的 IF 不起作用,因为 FROM 和 TO 有很多其他选项。

这在 MySQL 查询中是否可行?我也想在 Doctrine 中实现这一点。

最佳答案

假设从 0 开始。如果钱从 A 发送到 B,则应该添加。如果钱是从 B 汇给 A 的,则应将其移除。

您可以使用 MySQL 在 SUM() 函数中使用 CASE 语句来完成此操作,这将根据需要添加/减去资金。试试这个:

SELECT 
SUM(
CASE WHEN from = 'A' AND to = 'B' THEN amount
WHEN from = 'B' AND to = 'A' THEN 0 - amount END)
AS total
FROM myTable;

这是一个 SQL Fiddle示例。

关于php - 选择记录在同一张表中的汇款和收款的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31250393/

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