【问题标题】:SQL Query to get SUM depending on column values根据列值获取 SUM 的 SQL 查询
【发布时间】:2023-03-08 01:39:01
【问题描述】:

我有一张下表

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     |

有可能吗?

任何帮助将不胜感激。

【问题讨论】:

    标签: php mysql sql


    【解决方案1】:

    我建议使用aggregate functions:

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

    这是一个例子:

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

    【讨论】:

      【解决方案2】:

      这是你的例子:

      SELECT *, GROUP_CONCAT(`InvoiceNum`), SUM(`CheckAmt`) FROM `YourTable` GROUP BY `CheckNum`
      

      【讨论】:

      • 我想我找到了使用 andreah 帮助的解决方案。查询应该类似于 SELECT SUM(CheckAmount1), CheckDate1, GROUP_CONCAT(CheckNumber1, InvoiceNum) FROM Pickupsales GROUP BY CheckNum1;
      • 对不起,我忘记了GROUP BY。很晚了:-)
      • @Santoshshreshta 恐怕我认为可以公平地说 sql 中没有问题,这可能是一个有效的解决方案
      猜你喜欢
      • 2021-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-01
      • 2014-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多