2013-08-06 34 views
0

我必須編寫一個查詢,它具有動態where子句。我有一列gap_value如果用戶發送參數'P',那麼我需要取gap_value>0否則如果'N'它應該是gap_value<0在條件oracle的WHERE子句中的情況

SELECT a.region_cd, a.plant_cd, a.wk_nbr 
    FROM or_doh_plant_matrl_sm_t a 
    WHERE a.wk_nbr IN (201322, 201323) 
    AND a.plant_cd = '1115' 
    AND a.gap_value >0 

不使用動態SQL。我可以在WHERE條款中使用嗎?

回答

1

試試這個:

SELECT a.region_cd, a.plant_cd, a.wk_nbr 
    FROM or_doh_plant_matrl_sm_t a 
    WHERE a.wk_nbr IN (201322, 201323) 
    AND a.plant_cd = '1115' 
    AND 
    (
     (param = 'P' AND a.gap_value >0) 
    OR (param = 'N' AND a.gap_value <0) 
    )