SQL Server中如何按产品名称计算库存增减汇总?
SQL Server 实现产品数量增减统计的查询语句
假设你的操作记录表结构如下(表名示例为product_operations):
CREATE TABLE product_operations ( product_name VARCHAR(50), operation_type VARCHAR(10), quantity INT );
要实现提取唯一产品名称,并按操作类型统计数量增减,你可以使用GROUP BY分组结合CASE表达式处理正负值,最终用SUM聚合计算结果:
SELECT product_name, SUM(CASE WHEN operation_type = 'Added' THEN quantity WHEN operation_type = 'taken' THEN -quantity ELSE 0 END) AS net_quantity_change FROM product_operations GROUP BY product_name;
逻辑说明
GROUP BY product_name:确保每个产品只返回一行结果,即提取产品名称的唯一值CASE表达式:根据操作类型对数量做正负转换——"Added"时保留原数量,"taken"时取数量的负值SUM():对转换后的数值求和,得到该产品的净数量变化(正数为总增加量,负数为总减少量)
示例验证
如果表中有以下数据:
| product_name | operation_type | quantity |
|---|---|---|
| 苹果 | Added | 10 |
| 苹果 | taken | 3 |
| 香蕉 | Added | 5 |
| 香蕉 | Added | 7 |
| 香蕉 | taken | 4 |
执行查询后会得到结果:
| product_name | net_quantity_change |
|---|---|
| 苹果 | 7 |
| 香蕉 | 8 |
内容的提问来源于stack exchange,提问作者Ram
相关产品推荐
相关产品推荐

