2012-09-11 14 views
0

我目前正在製作一個存儲過程,爲用戶提供一個過濾系統來深入研究。現在我很難試圖在where語句中加入條件句。如下圖所示:SQL中的條件'AND'或'OR'其中語句

WHERE upper(stk.warehouse) LIKE '%' + upper(@warehouse) + '%' AND 
     upper(stk.product) LIKE '%' + upper(@product) + '%' AND 
     upper(stk.description) LIKE '%' + upper(@description) + '%' AND 
     upper(stk.long_description) LIKE '%' + upper(@longdescription) + '%' AND 
     cast(safety_stock_level as decimal(20)) LIKE '%' + 
     upper(@barcode) + '%' AND   
     (stk.physical_qty + stk.on_order_qty -stk.allocated_qty - stk.back_order_qty - 
     stk.uninspected_qty)>@available AND 

    *if @or =0 BEGIN 
    stk.on_order_qty > @onorder AND stk.physical_qty > @phys 
    else 
    stk.on_order_qty > @onorder OR stk.physical_qty > @phys* 

現在我已經嘗試了一個if語句,以no爲準,也是case語句。甚至有可能有條件OR或AND語句?

回答

3

你會做這樣的:

((@or = 0 AND stk.on_order_qty > @onorder AND stk.physical_qty > @phys) OR 
(@or = 1 AND (stk.on_order_qty > @onorder OR stk.physical_qty > @phys))) 
+0

哈,我怎麼沒看出來是那麼簡單。謝謝丹尼爾! – rmon2852