2013-08-06 29 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) 
    )