我需要编写一个SQL查询,它将返回所有订单号,这些订单号不仅仅是SKUENROLL,而且不应该返回订单号,因为SKUENROLL是订单上唯一的SKU
在本例中,此顺序将包含在查询结果中。
Order1001,包含SKUENROLLSKU688631
在本例中,查询结果中将不包括此顺序。
订单1003,包含SKUENROLL
需要注意的是,当返回查询结果时,它们如下所示
mysql - 查找不仅包含特定SKU的订单-LMLPHP
这是我到目前为止写的,但其余的我不确定。我从每个人那里得到了反馈,他们都做出了回应,并试图将其纳入其中,但都没有取得好的效果。
选择VO.DistID、VO.FirstName、VO.LastName、VO.OrderNumber、Email、Quantity、Sku,订单状态从dbo.VwOrders作为VO INNER JOIN dbo.VwDistributor作为VD ON VO.DistID=VD.DistID INNER JOIN dbo.VwOrderLines作为VOL ON VO.OrderNumber=VOL.OrderNumber INNER JOIN dbo.VwInventory作为VI ON VOL.ItemNumber=VI.InventoryNo和VOL.Warehouse=VI.Warehouse其中Sku='注册'

最佳答案

有几种不同的方法可以做到这一点。下面是一个使用条件聚合的选项:

select orderid
from yourtable
group by orderid
having max(case when sku = 'ENROLL' then 1 else 0 end) = 1
   and max(case when sku != 'ENROLL' then 1 else 0 end) = 1

SQL Fiddle Demo

10-07 22:33