如何通过SQL按ID汇总QTY字段数值并修正现有查询?
正确的SQL写法:按ID汇总QTY数值
咱们先拆解下你现有SQL的问题,这样你也能明白为啥它达不到预期:
- 没必要的嵌套子查询:你完全可以直接在主查询里加
CLIENT_ID的过滤条件,不用多套一层子查询。 - 错误的分组字段:你按
QTY_ON_HAND分组,这会把每个不同的库存数值当成独立分组,完全违背了「按ID汇总」的核心需求。 - SELECT子句不符合聚合规则:在GROUP BY查询中,SELECT里的字段要么是GROUP BY包含的字段,要么是聚合函数(比如SUM),你同时选了
QTY_ON_HAND和它的求和值,会导致结果混乱。
符合需求的SQL语句
根据你要按ID汇总QTY的目标,结合原查询里的CLIENT_ID过滤条件,正确写法如下:
SELECT ID, SUM(QTY_ON_HAND) AS QTY FROM INVENTORY WHERE CLIENT_ID = '(CLIENT ID HERE)' GROUP BY ID;
如果业务上需要同时展示CLIENT_ID(比如明确是某个客户下的ID汇总),可以把CLIENT_ID也加入分组和查询字段:
SELECT CLIENT_ID, ID, SUM(QTY_ON_HAND) AS QTY FROM INVENTORY WHERE CLIENT_ID = '(CLIENT ID HERE)' GROUP BY CLIENT_ID, ID;
执行效果说明
这条SQL会按以下逻辑运行:
- 先筛选出指定
CLIENT_ID的所有库存记录 - 按
ID(或CLIENT_ID+ID组合)对记录分组 - 对每组的
QTY_ON_HAND求和,并将求和结果命名为QTY,最终输出的格式和你想要的完全匹配:
ID QTY
123 5325
234 1468
内容的提问来源于stack exchange,提问作者S Mullen
相关产品推荐
相关产品推荐

