2015-04-28 3 views
1

У меня возникла логическая проблема в отношении запроса базы данных SQL. Мне нужно исключить 3 разные категории и любой элемент, который включен в эти категории; однако, если элемент под одной из этих категорий соответствует критериям для другой категории, я должен сохранить указанный элемент.Как записать условный оператор в SQL Server

Это пример вывод я буду получать после того, как запрос к базе данных на ее текущую версию:

ExampleDB | item_num | pro_type | area  | description 

    1  | 45KX-76Y | FLCM | Finished | coil8x 
    2  | 68WO-93H | FLCL | Similar | y45Kx 
    3  | 05RH-27N | FLDR | Finished | KH72n 
    4  | 84OH-95W | FLEP | Final | tar5x 
    5  | 81RS-67F | FLEP | Final | tar7x 
    6  | 48YU-40Q | FLCM | Final | bile6 
    7  | 19VB-89S | FLDR | Warranty | exp380 
    8  | 76CS-01U | FLCL | Gator | low5 
    9  | 28OC-08Z | FLCM | Redo  | coil34Y 

item_num и описание приведено в таблице вместе, и pro_type и площадь находится в 2-х отдельных таблицах - в общей сложности из 3 таблиц для извлечения данных.

Мне нужно построить запрос, который не будет отбрасывать какой-либо item_num, где площадь равна: Готово, Окончательно и Повторить; но мне также нужно взять любой элемент item_num, соответствующий критериям типа: FLCM и FLEP. В конце концов мой запрос должен выглядеть следующим образом:

ExampleDB | item_num | pro_type | area  | description 

    1  | 45KX-76Y | FLCM | Finished | coil8x 
    2  | 68WO-93H | FLCL | Similar | y45Kx 
    3  | 84OH-95W | FLEP | Final | tar5x 
    4  | 81RS-67F | FLEP | Final | tar7x 
    5  | 19VB-89S | FLDR | Warranty | exp380 
    6  | 76CS-01U | FLCL | Gator | low5 
    7  | 28OC-08Z | FLCM | Redo  | coil34Y 

ответ

0

Попробуйте это:

select * from table 
join... 
where area not in('finished', 'final', 'redo') or type in('flcm', 'flep') 
+0

Спасибо. Фактический запрос, который я использую, огромен, и я легко потерялся, пытаясь ориентироваться в нем. Я должен был добавить больше к вашему решению, но основы были одинаковыми, и он работает. – PhoenixFly

+0

Добро пожаловать –

0

Вы ищете что-то вроде

SELECT * 
FROM Table_1 
JOIN Table_ProType ON Table_1.whatnot = Table_ProType.whatnot 
JOIN Table_Area ON Table_1.whatnot = Table_Area.whatnot 
WHERE Table.area NOT IN ('Finished','Final','Redo') OR ProType.pro_type IN ('FLCM','FLEP') 

Давать имена трех таблиц и присоединяющихся критериев поможет мне улучшить ответ.

Смежные вопросы