MySQL按PO分组统计同产品收货总量并按产品名称排序
解决按采购订单(PO)+产品统计总收货量的SQL问题
你之前的查询只按Product_Name分组,会把不同PO下的同一款产品收货量全部累加,这就是问题所在。要实现每个PO下单独统计对应产品的总收货量,必须同时按PO和产品名进行分组。
假设你的GrnTable表包含以下核心字段:PO_Number(采购订单编号)、Product_Name(产品名称)、Receive_Quantity(单次收货量),正确的SQL查询应该是:
SELECT PO_Number, Product_Name, SUM(Receive_Quantity) AS Total_Received_Quantity FROM GrnTable GROUP BY PO_Number, Product_Name ORDER BY Product_Name;
关键说明:
GROUP BY PO_Number, Product_Name:这一步是核心,它会将数据按「采购订单+产品」的组合进行分组,确保每个PO下的每个产品单独计算总收货量,不会跨PO合并数据。SUM(Receive_Quantity):对每个分组内的收货量求和,得到该PO对应产品的总收货量。ORDER BY Product_Name:最终结果按产品名称排序,满足你的需求。
如果你的表还有其他需要展示的非聚合字段(比如产品IDProduct_ID),记得把这些字段也加入GROUP BY子句中(部分SQL模式如MySQL的ONLY_FULL_GROUP_BY会强制要求这一点)。
内容的提问来源于stack exchange,提问作者leena
相关产品推荐
相关产品推荐

