SQL Где для нескольких условий - PullRequest
0 голосов
/ 24 октября 2018

Я пытаюсь отфильтровать данные в SQL 2008, используя, где создать отчет заказа на покупку.Я хочу сказать, что если цена товара <$ 2 и мы продали 1 продажу хотя бы в течение месяца, то покажите мне все предметы, на которых было их количество, меньше 12 И если цена товара <$ 10 и мы продали 1 продажу как минимум в течение трех месяцев, то покажитемне все предметы, на которых было их количество, меньше 4 И если цена товара <50 долларов, и мы продали 1 продажу, по крайней мере, в течение шести месяцев, то покажите мне все предметы, на которых было их количество, меньше 2 И если цена товара <100 долларов, и мы продали 1продажа по крайней мере в течение девяти месяцев, затем покажите мне все предметы, на которых их количество было меньше 1. В любом случае, я могу это сделать.Посоветуйте пожалуйста с синтаксисом.Цена указана PREC_1, количество - QTY_ON_HND, дата продажи - SALD_DAT, количество проданных товаров - QTY_SOLD. Я буду признателен за вашу помощь </p>

. Вот запрос, который я сделал

`SELECT

'- Выбратьиз IM_IN 'enter code here M.ITEM_NO, enter code here M.DESCR, enter code here N.QTY_ON_HND, enter code here CASE enter code here WHEN N.QTY_ON_HND <0 <code>enter code here THEN 0 enter code here ELSE N.QTY_ON_HND enter code here END AS QTY_HND,

enter code here N.LST_COST, enter code here N.LST_RECV_DAT,

enter code here - выберите из IM_ITEM enter code here M.CATEG_COD, enter code hereM.ATTR_COD_1, enter code here M.ITEM_VEND_NO, enter code here M.ALT_1_UNIT, enter code here M.ALT_1_NUMER, enter code here M.PRC_1, enter code here M.LST_COST,

enter code here -Выберите из PS_TKT_HIST_LIN

enter code here сумма (S.QTY_SOLD) как QTY_SOLD, enter code here количество (S.BUS_DAT) как SALS_DATS

enter code here ОТ enter code here dbo.IM_INV N enter code here INNER JOIN dbo.IM_ITEM M enter code here ON enter code here N.ITEM_NO = M.ITEM_NO

enter code here INNER JOIN enter code here dbo.PS_TKT_HIST_LIN S enter code here ON enter code here N.ITEM_NO= S.ITEM_NO

enter code here ГДЕ S.BUS_DAT> getdate () - 270 И N.QTY_ON_HND <4 ИM.PRC_1 <2 </p>

enter code here Группировка по enter code here M.ITEM_NO, enter code here M.DESCR, enter code here M.ITEM_VEND_NO, enter code here M.CATEG_COD, enter code here M.ATTR_COD_1, enter code here N.QTY_ON_HND, enter code here N.LST_COST, enter code here N.LST_RECV_DAT, enter code here N.LST_SAL_DAT, enter code here M.ALT_1_UNIT, enter code here M.ALT_1_NUMER, enter code here M.PRC_1,enter code here M.LST_COST,

enter code here Заказ по M.ITEM_NO`

1 Ответ

0 голосов
/ 25 октября 2018

Вам понадобится объединить 2 типа фильтрации.

"Цена товара <$ 2" -> Для этого требуется пункт WHERE

EG

WHERE [item price] < 2

«мы продали 1 продажу по крайней мере в течение месяца»

Это фильтр агрегатного типа, поэтому вам нужно использовать HAVING

HAVING COUNT(*) > 1

плюс условие группировки

GROUP BY DATEPART(mm, bus_dt)

Поскольку у вас много критериев - я бы посоветовал вам разбить его и начать сверху.Затем продолжите свой путь, как только у вас будет работать первый набор фильтров ...

Может быть полезно попробовать объединить все различные критерии в простую таблицу EXCEL.

EG

Добавить строку для каждого ИЛИ и столбец для каждого условия И.

Бон Шанс!

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