2015-04-28 90 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,其中area等於:Finished,Final和Redo;但我也需要拉入任何符合類型標準的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') 

,給出了三個表和連接標準的名稱將幫助我提高了答案。