我有两张表需要比较:
TABLE 'orders'
customer|product |colour|order_quantity
Germany |product1|black |100
Germany |product1|red |200
Germany |product3|yellow|150
UK |product1|black |450
UK |product2|green |350
UK |product5|grey |100
Italy |product1|grey |200
Italy |product2|black |300
Italy |product3|yellow|400
Italy |product3|black |800
Italy |product4|blue |250
Italy |product5|grey |370
TABLE 'inventory'
product |colour|inventory_quantity
product1|black |830
product1|red |250
product1|grey |600
product1|mango |120
product2|green |50
product2|black |350
product3|yellow|900
product3|black |900
product4|blue |210
product4|black |50
product4|green |25
product5|grey |700
Output wanted:
product |colour|order_quantity|inventory_quantity|difference
product1|black |550 |830 |180
product1|red |200 |250 |50
product1|grey |200 |600 |400
product1|mango |0 |120 |120
product2|green |350 |50 |-300
product2|black |300 |350 |50
product3|yellow|550 |900 |350
product3|black |800 |900 |100
product4|blue |250 |210 |-40
product4|black |0 |50 |50
product4|green |0 |25 |25
product5|grey |370 |700 |330
但是,目前我得到的库存数量倍数给我一个不正确的差异。如何比较“订单”(按产品分组)和“库存”(未分组)中的数量?
谢谢, 德里克
答案 0 :(得分:0)
这是一个选项
Select product, colour, order_Quantity,
Inventory_Quantity, Inventory_Quantity-Order_Quantity as difference
FROM ORDERS I
FULL OUTER
(SELECT Sum(Order_Quantity), product, Colour
FROM Inventory
GROUP BY product, Colour) as O
ON O.Product=I.Product
and O.Colour = I.Colour
第二个选项:
Select product, colour, sum(order_Quantity), max(Inventory_Quantity), sum(order_Quantity)-max(inventory_Quantity)
FROM Inventory I
FULL OUTER JOIN O
ON I.Product=O.Product
and O.Colour = I.Colour
GROUP BY product, colour
选项3
SELECT product, colour, OQ as Order_Quantity, Inventory_Quantity, Inventory_Quantity-OQ as Difference
Select product, colour, sum(order_Quantity) as OQ , Inventory_Quantity
FROM Inventory I
FULL OUTER JOIN O
ON I.Product=O.Product
and O.Colour = I.Colour
GROUP BY product, colour)
使用完全外部联接,因为订单或库存可能为空并且怀疑您仍然需要差异。