Мне нужен запрос, который сузит и упорядочит результаты поиска - PullRequest
0 голосов
/ 23 мая 2019

Мой запрос дает мне всю необходимую информацию, но она слишком большая, и я трачу слишком много времени на манипулирование данными в Excel.

Мне нужен запрос, который показывает мне номера заказов, которые содержатконкретные SKU (элементы) и ВСЕ другие SKU, которые были в этом порядке.

У меня есть другой запрос, который показывает конкретные SKU, которые мне нужны.Тем не менее, это исключает другие части этого порядка.Мой запрос говорит, например, показать мне все заказы ", где im.Sku, как '91323-10-0' или im.Sku, как '02105-10-0'"

SKU выше - это подушки.Допустим, я заказываю подушку (91626-10-0) и футболку (95523-22-L).Номер заказа: 0999928767463320008.

Мой текущий запрос не выдаст футболку в данных.

select 

p.TrackingNumber
,im.Sku
,convert(text,oh.OrderNumber) as 'OrderNumber'
,convert(date,oh.ShipTime) as 'OrderDate'
,oh.BusinessUnitCode
,oh.OrigShipCode
,oh.ShipCode
,p.ShipWeight
,oh.ShipToRegion

from dmhost.tblOrderHeader oh

join dmhost.tblContainer c on oh.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 im.ItemMasterID = cc.ItemMasterID

where (oh.ShipTime between '05/1/2019' and '05/24/2019')
and oh.OrigShipCode like '028'
and  oh.ShipCode like '071'
and (im.Sku like '02105-10-0' or im.Sku like '91323-10-0') --Pillow SKUs

order by oh.OrderNumber

Этот код даст мне все подушки, которые были отправлены в период с 1/19/19 и5/23 / 19.

Но футболки, например, не появятся.

1 Ответ

0 голосов
/ 24 мая 2019

Комментарий о подзапросе был близким ответом.Глядя на ваш запрос и 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 и т. Д., Дает визуальную очередь любому, кто идет за вами, чтобы увидеть более прямые отношения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...