Возврат полного заказа на продажу, где данный товар приобретен SQL - PullRequest
0 голосов
/ 26 июня 2018

Я пытаюсь запросить нашу таблицу Sales_Order_Line_Item. Мы вводим новый код товара «Тариф», наши продавцы обязаны добавлять этот код во все заказы, в которых есть товары, начинающиеся с «WI». Поэтому мне нужно создать запрос, который покажет мне все заказы, которые имеют коды товаров, которые начинаются с «WI», но в которых отсутствует код «Тариф».

Я не могу понять, как вернуть список, который показывает эти данные.

Для простоты моя таблица Sales_Order_Line_Item имеет эти 3 столбца:

UNIQUE_LINE_ID, SALE_ORDER_#, ITEM_#

Ответы [ 3 ]

0 голосов
/ 26 июня 2018

Один грязный трюк - использовать выражение case и подсчитать, сколько раз эти элементы появляются:

SELECT   sale_order_no
FROM     sales_order_line_item
GROUP BY sale_order_no
HAVING   COUNT(CASE WHEN item_code LIKE 'WI%' THEN 1 END) > 0 AND
         COUNT(CASE WHEN item_code = 'Tarrif' THEN 1 END) = 0
0 голосов
/ 26 июня 2018

Если вы хотите получить полную информацию о заказе, вы можете использовать EXISTS/NOT EXISTS вместо:

select so.*
from sales_order_line_item so
where exists (select 1 from sales_order_line_item sol where sol.sale_order_no = s.sale_order_no and sol.item_code LIKE 'WI%') and
      not exists (select 1 from sales_order_line_item sol where sol.sale_order_no = s.sale_order_no and sol.item_code  = 'Tarrif');
0 голосов
/ 26 июня 2018

Должно быть примерно так:

select * from Sales_Order_Line_Item
where ItemCode like 'wi%'
and tariff is null
...