2016-06-30 5 views
0

У меня есть список поставщиков с заказами из разных дат в tbl_supplier_orders.SQL Server: выберите строки, применяющие разные условия, если условие основано на двух столбцах

Я хочу, чтобы выбрать только заказы, как правило, на:

  • Если Имя поставщика: A, B, C ORDER_DATE: 2016-02-19
  • Если Имя поставщика: P, Q, R ORDER_DATE: 2016- 03-12
  • Если Имя поставщика: M, N ORDER_DATE: 2016-03-15
  • Если Имя поставщика: W, X, Y, Z, ORDER_DATE: 2016-05-17
  • и остальная часть всех записей поставщиков с 2016 года -01-01

Колонны order_name, order_date, supplier_name, address, cost.

Мой первоначальный подход:

select 
    * 
from 
    tbl_supplier_order t1 
where 
    t1.order_date >= CONVERT(date, '2016-01-01') 
    and (t1.order_date < CONVERT(date, '2016-02-19') 
      AND t1.supplier_name not in ('A','B','C')) 
    and (t1.order_date < CONVERT(date, '2016-03-12') 
      AND t1.supplier_name not in ('P','Q','R')) 
    and (t1.order_date < CONVERT(date, '2016-03-15') 
      AND t1.supplier_name not in ('M','N')) 
    and (t1.order_date < CONVERT(date, '2016-05-07') 
      AND t1.supplier_name not in ('W','X','Y','Z')) 
+0

Вы забыли свой вопрос? –

+0

Да, мне нужно добавить вопросительный знак, вероятно !!! – Aarush

ответ

0

Можете ли вы уточнить, что именно вы пытаетесь сделать?

If supplier_name: A,B,C order_date:2016-02-19 

Вы говорите, один из ваших условий вы хотите выбрать только строки, где есть А Имя поставщика, B, C и дата заказа 2016-2-19, а остальные условия следуют (это может быть любой других комбинаций)?

+0

Я хочу выбрать все строки A, B, C с датой> 2016-02-19 объединить все строки P, Q, R с датой> 2016-03-12 и так далее, и есть много других поставщиков, чьи Мне нужно показать все данные с 2016-01-01 – Aarush

+0

Ответ Магнуса должен работать, вам просто нужно изменить свои AND на OR. Если не дайте мне знать. – idgt

0

Не тестировалось, но, возможно, вы можете попробовать что-то вроде этого.

select * from tbl_supplier_order t1 where 
(t1.order_date>CONVERT(date,'2016-01-01') AND t1.supplier_name not in ('A','B','C','P','Q','R','M','N','W','X','Y','Z')) 
OR (t1.order_date>CONVERT(date,'2016-02-19') AND t1.supplier_name in ('A','B','C')) 
OR (t1.order_date>CONVERT(date,'2016-03-12') AND t1.supplier_name in ('P','Q','R')) 
OR (t1.order_date>CONVERT(date,'2016-03-15') AND t1.supplier_name in ('M','N')) 
OR (t1.order_date>CONVERT(date,'2016-05-17') AND t1.supplier_name in ('W','X','Y','Z')) 
Смежные вопросы