如何实现出库量与库存量相减且保留供应表全量型号数据?
问题:计算剩余库存量并保留所有供应架型号
数据表信息
表1:Checkouts(出库记录表)
| Model(型号) | Checkout quantity(出库数量) |
|---|---|
| JD33 | 5 |
表2:Supply racks(供应架表)
| Model(型号) | Total quantity(总库存量) |
|---|---|
| JD33 | 90 |
| ABC1 | 75 |
当前问题
需要计算剩余库存量(总库存量 - 出库数量),但当前查询仅返回出库记录表中存在的型号,要求结果保留供应架表的所有型号,无出库记录的型号直接显示原总库存量。
当前查询语句
select SILVER_RACKS.QTY as QTY, SILVER_RACKS.MODEL as MODEL, SILVER_RACKS.QTY-CHECKOUT_TOTAL.CHECKOUT_QTY as total_QTY from SILVER_RACKS SILVER_RACKS, CHECKOUT_TOTAL CHECKOUT_TOTAL where SILVER_RACKS.MODEL=CHECKOUT_TOTAL.MODEL
当前结果表
| Model(型号) | Total quantity(剩余库存量) |
|---|---|
| JD33 | 85 |
解决方案
使用**左连接(LEFT JOIN)**以供应架表为主表关联出库记录表,确保主表所有记录被保留;同时用COALESCE函数将无出库记录时的空值转为0,避免计算错误:
select SILVER_RACKS.MODEL as MODEL, SILVER_RACKS.QTY as 总库存量, COALESCE(CHECKOUT_TOTAL.CHECKOUT_QTY, 0) as 出库数量, SILVER_RACKS.QTY - COALESCE(CHECKOUT_TOTAL.CHECKOUT_QTY, 0) as 剩余库存量 from SILVER_RACKS left join CHECKOUT_TOTAL on SILVER_RACKS.MODEL = CHECKOUT_TOTAL.MODEL
预期结果表
| Model(型号) | 总库存量 | 出库数量 | 剩余库存量 |
|---|---|---|---|
| JD33 | 90 | 5 | 85 |
| ABC1 | 75 | 0 | 75 |
内容的提问来源于stack exchange,提问作者JaredCusick
相关产品推荐
相关产品推荐

