我在 MySQL 数据库中有三个相关的表:
- inventory_items 定义仓库中的项目类型
- inventory_transactions 定义添加或删除的库存数量
- 位置定义所述库存的位置
Inventory_transactions 有一个 quantity_offset,用于存储从给定位置添加或删除了多少给定 inventory_item。
我有以下查询,它将获取 global_quantity(给定 inventory_item_id 的所有数量偏移的总和)以及 location_quantity,只要我知道位置 ID,它对特定位置执行相同操作。
SELECT sku, name, SUM(quantity_offset) AS global_quantity,
(
SELECT SUM(quantity_offset)
FROM inventory_transactions
WHERE inventory_items.inventory_item_id = inventory_transactions.inventory_item_id AND inventory_transactions.location_id = 1
) AS location_quantity
FROM inventory_items
JOIN inventory_transactions ON inventory_items.inventory_item_id = inventory_transactions.inventory_item_id
GROUP BY sku
我想要结束的是为每个位置添加一列,因此结果可能具有如下值:
sku, name, global_quantity, denver_quantity, dallas_quantity, ft_wayne_quantity
我的后备方案是在单个inventory_item 页面上执行此操作(当我知道库存项目并可以按位置分组时),但是能够在单个查询中执行此操作并将其全部放入一个表中会非常棒。
最初,我以为我可以遍历子查询,但无法以编程方式设置列名(在 AS 中)。
提前感谢您提供的任何帮助。