按物料编号(ItemNo)分组汇总QtyToStock的SQL实现咨询
解决按物料编号分组汇总QtyToStock的问题
嘿,我看你在尝试按物料编号(ItemNo)分组汇总QtyToStock字段,当前的SQL代码里有个关键问题需要调整——你把要汇总的QtyToStock字段也放进GROUP BY子句里了,这会让分组逻辑出错,没法实现你想要的求和效果。
问题原因
GROUP BY的核心规则是:所有出现在SELECT中、没有被聚合函数(比如SUM、COUNT)包裹的字段,都必须加入GROUP BY;但被聚合的字段(也就是你要求和的QtyToStock)绝对不能放到GROUP BY里。如果把QtyToStock加入分组,数据库会按每个不同的QtyToStock值单独分组,就不是按ItemNo汇总了。
修正后的SQL代码
SELECT dbo.InventoryItems.ItemNo, dbo.InventoryItems.DescriptionMed AS Description, SUM(dbo.InventoryItems.QtyToStock) AS QtytoStock, dbo.Locations.LocationCode FROM dbo.InventoryItems INNER JOIN dbo.Locations ON dbo.InventoryItems.LocationID = dbo.Locations.LocationID GROUP BY dbo.InventoryItems.ItemNo, dbo.InventoryItems.DescriptionMed, dbo.Locations.LocationCode
补充说明
如果你的需求是仅按ItemNo单独分组(不需要按仓库位置或物料描述分组),那就要调整SELECT和GROUP BY,只保留ItemNo和求和字段,比如:
SELECT dbo.InventoryItems.ItemNo, SUM(dbo.InventoryItems.QtyToStock) AS QtytoStock FROM dbo.InventoryItems INNER JOIN dbo.Locations ON dbo.InventoryItems.LocationID = dbo.Locations.LocationID GROUP BY dbo.InventoryItems.ItemNo
不过从你原代码的SELECT内容来看,应该是需要按ItemNo+DescriptionMed+LocationCode的组合来分组汇总,第一种修正后的代码更贴合你的初始需求。
内容的提问来源于stack exchange,提问作者user9399808
相关产品推荐
相关产品推荐

