Комментарий о подзапросе был близким ответом.Глядя на ваш запрос и 5 уровней глубины, чтобы получить sku из заданного порядка, вам, в основном, нужно повторить ВСЕ таблицы, объединенные дважды ... Один раз для внутреннего квалифицирующего PQ (псевдоним PreQuery), который получает DISTNCT-приказы на основе sku# вы ищете.После того, как вы получите этот отдельный порядок, ТО вернитесь к остальным деталям и получите все компоненты в этом порядке.
Чтобы помочь сохранить шаг, я предварительно захватил все поля заголовка ORDER, пока был там.,Таким образом, вам не нужно снова возвращаться к заголовку только для этих значений.
select
p.TrackingNumber,
im.Sku,
pq.OrderNumber',
pq.OrderDate',
pq.BusinessUnitCode,
pq.OrigShipCode,
pq.ShipCode,
p.ShipWeight,
pq.ShipToRegion
from
( select distinct
oh.OrderNumber
convert(text,oh.OrderNumber) as 'OrderNumber',
convert(date,oh.ShipTime) as 'OrderDate',
oh.BusinessUnitCode,
oh.OrigShipCode,
oh.ShipCode,
oh.ShipToRegion
from
dmhost.tblOrderHeader oh
join dmhost.tblContainer c
on oh.OrderHeaderID = c.OrderHeaderID
join dmhost.tblContainerContents cc
on c.ContainerID = cc.ContainerID
join dmhost.tblItemMaster im
on cc.ItemMasterID = im.ItemMasterID
where
oh.ShipTime between '2019-05-01' and '2019-05-24'
and oh.OrigShipCode like '028'
and oh.ShipCode like '071'
--Pillow SKUs
and (im.Sku like '02105-10-0' or im.Sku like '91323-10-0') ) pq
join dmhost.tblContainer c
on pq.OrderHeaderID = c.OrderHeaderID
join dmhost.tblPackage p
on c.ContainerID = p.ContainerID
join dmhost.tblContainerContents cc
on c.ContainerID = cc.ContainerID
join dmhost.tblItemMaster im
on cc.ItemMasterID = im.ItemMasterID
order by
pq.OrderNumber
Если бы была более короткая ассоциация от заказа до sku, это могло бы сократить это.такие как OrderHeader -> OrderDetails (item) -> Items (имеет sku на элемент), очевидно, могли бы сделать запрос более компактным.
Кроме того, при написании SQL предпочтение отдается индентификации.Показ того, как таблица A попадает в B, а B в C и т. Д., Дает визуальную очередь любому, кто идет за вами, чтобы увидеть более прямые отношения.