sql - 未找到 SKU 时返回 0 数量
问题描述
我的数据库中有 2 个表:warehouse
和warehouse_inventory
.
我的warehouse
桌子看起来像:
name | warehouse_id |
--------+----------------|
name_1 | warehouse_id_1 |
name_2 | warehouse_id_2 |
name_3 | warehouse_id_3 |
我的warehouse_inventory
桌子看起来像:
warehouse_id | SKU | quantity |
----------------+-------------+----------|
warehouse_id_1 | item_sku_1 | 100 |
warehouse_id_2 | item_sku_1 | 100 |
现在,我正在寻找一种解决方案,它可以让我得到这样的结果:
name | warehouse_id | SKU | quantity |
--------+-----------------------------+----------|
name_1 | warehouse_id_1 | item_sku_1 | 100 |
name_1 | warehouse_id_1 | item_sku_2 | 0 |
name_2 | warehouse_id_2 | item_sku_1 | 100 |
name_2 | warehouse_id_2 | item_sku_2 | 0 |
name_3 | warehouse_id_3 | item_sku_1 | 0 |
name_3 | warehouse_id_3 | item_sku_2 | 0 |
where
当我在 SQL 查询中选择条件时:
SELECT * FROM [what's here?] WHERE warehouse_inventory.SKU IN ('item_sku_1', 'item_sku_2')
解决方案
如果您的数据库中没有包含所有 SKU 的表,则无法执行此操作。
因此,假设您的所有项目主数据都有一个名为 [item] 的表,您应该这样做:
SELECT W0.name, W0.warehouse_id, I0.SKU, ISNULL(W1.quatity, 0) as 'Quantity'
FROM [item] I0
CROSS JOIN [warehouse] W0
LEFT JOIN [warehouse_inventory] W1 ON W1.warehouse_id = W0.warehouse_id AND W1.SKU = I0.SKU
在 SAP Business One 上,我们这样做:
SELECT W0.WhsName, W0.WhsCode, I0.ItemCode, ISNULL(W1.OnHand, 0) as 'Quantity'
FROM OITM I0
CROSS JOIN OWHS W0
LEFT JOIN OITW W1 ON W1.WhsCode = W0.WhsCode AND W1.ItemCode = I0.ItemCode
ORDER BY 1 DESC
推荐阅读
- javascript - 有没有办法以编程方式检查 iframe 的元素?
- python - 如何持续跟踪我钱包中特定代币的余额
- amazon-web-services - 如何最好地维护 Redshift 集群
- python - matplotlib 散点图,带有非连续 y 轴刻度,数据类型为整数
- php - 当在 PHP 中命中 API 端点时,如何编写 HTML 模板并使用自定义用户名作为 files_names 创建该 HTML 文件?
- javascript - django中使用choiceField的动态表单
- android - Android Fragment 避免在后按时刷新
- c# - 从 SOAP c# 扩展 wsdl 类
- python - Python 没有在生成的进程上清理 TemporaryDirectory
- azure - Azure - 使用 replyUrlsWithType 创建应用注册