首页 > 解决方案 > 根据列值获取 SUM 的 SQL 查询

问题描述

我有一张下表

InvoiceNum | CheckAmt | CheckNum | 
----------------------------------
1234       |10.00     |1244      |
2346       |11.00     |1244      |
4176       |12.00     |1244      |
5213       |15.00     |1673      |

上表代表客户的付款。客户可以有多张发票,他们可以通过单张支票付款。

例如,前三行由同一张支票支付。所以我想在应用查询后如下所示

InvoiceNum       | CheckAmt | CheckNum |
----------------------------------------
1234, 2346, 4176 | 33.00    | 1244     |
5213             | 15.00    | 1673     |

有可能吗?

任何帮助,将不胜感激。

标签: phpmysqlsql

解决方案


我建议使用聚合函数

用于GROUP BY按支票编号对行进行分组。
用于GROUP_CONCAT用逗号连接分组的发票编号SEPARATOR
用于SUM汇总分组支票金额。

这是一个例子:

SELECT
    GROUP_CONCAT(`InvoiceNum` SEPARATOR ', ') AS `InvoiceNum`,
    SUM(`CheckAmt`) AS `CheckAmt`,
    `checkNum`
FROM
    `yourTable`
GROUP BY
    `checkNum`

推荐阅读