我有两张桌子
table_inventory
List item
inventory_rack_key(primarykey)
node_key
rack_id
inventory_item_key
in_coming_qty,locked_qty
quantity
table_item
inventory_item_key(primary key)
item_id,product_zone
此处提供了表格示例DB TABLES
我需要查询以找出那些(net_qty)的项目,即差异b / w总和in_coming_qty
& quantity
& locked_qty
是否定的。由node_key,rack_id, item_id,net_qty
安排
注意:每个不同的集合{node_key,rack_id, item_id,net_qty}
在输出中只有1行。
对于ex :{node_key,rack_id, item_id}
= {ABD101,RK-01,562879}在 table_inventory 中有4行
但是在输出net_qty = -78(单行)。
我所做的查询是给我结果但我们可以用其他方式吗?
SELECT l.node_key,
l.rack_id,
i.item_id,
( SUM(l.quantity + l.in_coming_qty) - SUM(l.locked_qty) ) AS net_qty
FROM table_inventory l,
table_item i
WHERE l.inventory_item_key = i.inventory_item_key
GROUP BY l.node_key,
l.rack_id,
i.item_id
HAVING SUM(l.quantity + l.in_coming_qty) - SUM(l.locked_qty) < 0
答案 0 :(得分:4)
不是真的。有一个小变种:
select v.* from (
SELECT l.node_key,
l.rack_id,
i.item_id,
SUM(l.quantity + l.in_coming_qty - l.locked_qty) AS net_qty
FROM table_inventory l,
table_item i
WHERE l.inventory_item_key = i.inventory_item_key
GROUP BY l.node_key,
l.rack_id,
i.item_id
) v
where net_qty < 0
- 这意味着SUM
计算只需要编码一次,但您仍然需要进行SUM。