如果有链接到订单号的数据,我如何提取一些而不是另一个(不存在?)?

If there is data linked to an order number, how do i pull some but not the other (not exists?)?

我正在使用 Toad for Oracle。

我目前在院子里和仓库里都有订单号。我想看看院子里只有东西的东西。

基本上我需要计算院子里不同物品的数量以及每个订单的重量总和

我目前使用它计算院子里每个订单的物品数量,但它不限于只有院子物品的订单

select ORD.WH_ID, SIO.ORDER_NUMBER, SIO.CUSTOMER_NAME, COUNT    (ORD.ITEM_NUMBER) AS LINE_COUNT, SUM(TIM.UNIT_WEIGHT * ORD.QTY) AS WEIGHT
from t_ORDER_DETAIL ORD
JOIN T_ITEM_MASTER TIM
ON ORD.WH_ID = TIM.WH_ID
AND ORD.ITEM_NUMBER = TIM.ITEM_NUMBER
JOIN SI_ORDER SIO
ON SIO.WH_ID = ORD.WH_ID
AND SIO.ORDER_NUMBER = ORD.ORDER_NUMBER
where ORD.wh_id = '603'
--AND ORDER_NUMBER = '1923421'
AND PROCESS_DATE >= SYSDATE -1
AND TIM.CLASS_ID IN ('GYARD','GSSPIPE','GBLKALLTHR','GCOPPPIPE','GCOPPCNC')
AND SIO.CARRIER = 'OT'
GROUP BY ORD.WH_ID, SIO.ORDER_NUMBER, SIO.CUSTOMER_NAME, WEIGHT
ORDER BY SIO.ORDER_NUMBER

table 1
order #   Item #
Order1         Y51
Order1         Y52
Order2         Y51
Order2         W35
Order3         W21
Order3         W80

Table 2
Item #       Location
Y51          Yard
Y52          Yard
W35          Warehouse
W21          Warehouse
W80          Warehouse

从上面的示例集中,我只想查看 Order1,因为它是唯一包含仅位于 Yard 中的项目的订单

我正在使用您的两个示例 tables(table 1 = 订单,table 2 = 商品)。这是查找包含堆场项目但不包含仓库项目的订单的订单号的方法:

select o.orderno
from orders o
join items i on i.itemno = o.itemno
group by o.orderno
having count(case when i.location = 'Yard' then 1 end) > 0
   and count(case when i.location = 'Warehouse' then 1 end) = 0;

如果要显示完整订单,请在子查询中使用上述查询,例如:

select *
from orders
where orderno in ( <above query> )
order by orderno, itemno;

如果您想要按订单聚合,则可以相应地修改查询,例如:

select
  o.orderno,
  count(*) as number_of_positions,
  sum(o.amount) as number_of_pieces,
  sum(o.amount * i.weight) as total_weight
from orders o
join items i on i.itemno = o.itemno
group by o.orderno
having count(case when i.location = 'Yard' then 1 end) > 0
   and count(case when i.location = 'Warehouse' then 1 end) = 0
order by o.orderno;

如果你想对每个项目进行聚合,你可能需要子查询加上一个单独的聚合。