如何按SerialNumber和ID分组,合并同值项并汇总包装量与损坏量?
合并相同SerialNumber和ID的记录并汇总金额
这是一张表格示例,需求是合并SerialNumber和ID值相同的记录,汇总PackagedAmount与DamagedAmount。我尝试了以下查询语句:
SELECT * FROM InventoryHistory ih JOIN ( SELECT SerialNumber, ID, SUM(PackagedAmount) AS pa, SUM(DamagedAmount AS am FROM InventoryHistory GROUP BY SerialNumber, ID ) ttl ON SerialNumber = ih.SerialNumber AND ttl.ID = ih.ID) WHERE ID = @ID
你的查询存在两处问题:一是子查询里SUM(DamagedAmount AS am)语法错误,缺少闭合括号;二是没必要用JOIN操作,直接分组查询就能得到需要的结果。
修正后的查询语句如下:
SELECT SerialNumber, ID, SUM(PackagedAmount) AS TotalPackagedAmount, SUM(DamagedAmount) AS TotalDamagedAmount FROM InventoryHistory WHERE ID = @ID GROUP BY SerialNumber, ID
这个语句通过GROUP BY SerialNumber, ID将相同编号和ID的记录分组,用SUM()函数分别汇总包装数量和损坏数量,再通过WHERE子句过滤指定ID的记录,直接得到你需要的汇总结果,逻辑更简洁高效。
内容的提问来源于stack exchange,提问作者user21766112
相关产品推荐
相关产品推荐

