条件oracle的WHERE子句中的情况

时间:2013-08-06 04:46:04

标签: sql oracle plsql oracle11g

我必须编写一个具有动态where子句的查询。我有一个列gap_value,如果用户发送参数'P',那么我需要提取gap_value>0否则如果'N'应该是gap_value<0

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 个答案:

答案 0 :(得分: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)
     )