3 sql sql-server group-by count
我试图通过项目编号将我的头部放到太空中,并将数量添加到库存中.
我目前的代码是:
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.QtyToStock
, dbo.InventoryItems.DescriptionMed, dbo.Locations.LocationCode
HAVING (dbo.InventoryItems.ItemNo LIKE 'CL10%')
Run Code Online (Sandbox Code Playgroud)
我得到以下结果:
但我的预期输出是:
CL1000将与它们的总和成两行.请帮忙!
ItemNo Description QTYtoStock LocationCode
CL1000 Square Seat Legs 4 CREST
CL1000 Square Seat Legs 93 DZ
CL1002 Square Low Back Sofa 5 DZ
Run Code Online (Sandbox Code Playgroud)
你显然只需要正确的GROUP BY:
SELECT ii.ItemNo, ii.DescriptionMed AS Description,
SUM(ii.QtyToStock) AS QtytoStock, l.LocationCode
FROM dbo.InventoryItems ii INNER JOIN
dbo.Locations l
ON ii.LocationID = l.LocationID
WHERE ii.ItemNo LIKE 'CL10%'
GROUP BY ii.ItemNo, ii.DescriptionMed, l.LocationCode;
Run Code Online (Sandbox Code Playgroud)
所有未聚合的列(或表达式)都应该在GROUP BY. QtyToStock正在汇总,所以这是不合适的.
进一步建议:
HAVING条款是GROUP BY关键.使用时可以更好地处理(通常)WHERE.这WHERE将减少需要聚合的行数,这通常是性能获胜.| 归档时间: |
|
| 查看次数: |
64 次 |
| 最近记录: |