SQL多行列转单行查询求助:订单与库存表库存可用性统计
SQL查询问题:判断单个仓库库存是否满足订单需求
我几乎很少提问,请各位见谅。
示例Orders表
| Order_ID | Ord_Partno | Ord_UnitPrice | Ord_Qty |
|---|---|---|---|
| 1658712 | PN001 | $1.20 | 9 |
| 1658712 | PN002 | $2.40 | 4 |
| 1658712 | PN003 | $1.40 | 21 |
| 1658712 | PN004 | $1.10 | 16 |
示例Inventory表
| Inv_Partno | Inv_Warehouse | Stock |
|---|---|---|
| PN001 | Atlanta | 14 |
| PN001 | AtlantaHold | 0 |
| PN001 | Chicago | 7 |
| PN001 | ChicagoHold | 0 |
| PN002 | Atlanta | 5 |
| PN002 | AtlantaHold | 18 |
| PN002 | Chicago | 0 |
| PN002 | ChicagoHold | 0 |
| PN003 | Atlanta | 2 |
| PN003 | AtlantaHold | 43 |
| PN003 | Chicago | 19 |
| PN003 | ChicagoHold | 0 |
需求说明
Inventory表中每个零件对应4条仓库记录,包含可用库存和为其他订单预留的库存。给定一个Order_ID,需判断Atlanta或Chicago仓库(非Hold仓库)中任意一个的库存是否大于Ord_Qty(不合并两个仓库的库存),最终输出如下结果表:
目标结果表
| Ord_Partno | Ord_UnitPrice | Ord_Qty | Atlanta | Chicago | InStock |
|---|---|---|---|---|---|
| PN001 | $1.20 | 9 | 14 | 7 | Yes |
| PN002 | $2.40 | 4 | 5 | 0 | Yes |
| PN003 | $1.40 | 21 | 2 | 19 | No |
| PN004 | $1.10 | 16 | 8 | 9 | No |
我的尝试
作为SQL新手,我尝试过使用DISTINCT、LEFT/INNER JOIN、CASE + EXISTS等方法,但始终无法复现目标结果,恳请各位帮忙解决。
我写的示例查询语句:
SELECT DISTINCT Ord_Partno, Ord_UnitPrice, Ord_Qty, () AS Atlanta, () AS Chicago, () AS InStock FROM Orders INNER JOIN Inventory ON Ord_Partno = Inv_Partno WHERE Order_ID = 1658712 AND (Inv_Warehouse = "Atlanta" OR Inv_Warehouse = "Chicago")
内容的提问来源于stack exchange,提问作者Patrick Bailey
相关产品推荐
相关产品推荐

