如何将列与Oracle中的参数进行比较?

时间:2011-08-05 09:29:52

标签: sql oracle oraclereports

我的代码是这样的..

SELECT ALL TBL_MONITOR.ITEM_ID, TBL_MONITOR.CATEGORY, 
TBL_MONITOR.BRANDNAME, TBL_MONITOR.PRICE, TBL_MONITOR.QUANTITY
FROM TBL_MONITOR
where 
case when :pricetag = 'Great' then tbl_monitor.price >= :para_price end,
case when :pricetag = 'Less' then tbl_monitor.price >= :para_price end

这部分不起作用,它说..缺少关键字==> > =:para_price end

==> >= :para_price end,
我想做的是,如果用户输入'更大',报告将显示的价格大于':para_price' 我该怎么解决这个问题?非常感谢提前:)

4 个答案:

答案 0 :(得分:4)

试试这个

WHERE 
(:pricetag = 'Great' AND tbl_monitor.price >= :para_price)
OR
(:pricetag = 'Less' AND tbl_monitor.price <= :para_price)

答案 1 :(得分:3)

SQL CASE语句(除了您正在进行的语法错误之外)不是像C或PHP那样的流控制指令。它是返回值的表达式,而不是决定代码的哪一部分将被执行的方式。

你不想说你想要完成什么或者它是如何失败的,但看起来你想要一个简单的表达:

WHERE (:pricetag = 'Great' AND tbl_monitor.price >= :para_price)
OR (:pricetag = 'Less' AND tbl_monitor.price <= :para_price)

答案 2 :(得分:1)

试试这样:

SELECT ALL TBL_MONITOR.ITEM_ID, 
      TBL_MONITOR.CATEGORY, 
      TBL_MONITOR.BRANDNAME, 
      TBL_MONITOR.PRICE, 
      TBL_MONITOR.QUANTITY
FROM TBL_MONITOR
WHERE (:pricetag = 'Great' AND tbl_monitor.price >= :para_price)
OR (:pricetag = 'Less' AND tbl_monitor.price <= :para_price)

答案 3 :(得分:0)

SELECT ALL TBL_MONITOR.ITEM_ID, TBL_MONITOR.CATEGORY, 
TBL_MONITOR.BRANDNAME, TBL_MONITOR.PRICE, TBL_MONITOR.QUANTITY
FROM TBL_MONITOR
where 
1 = CASE 
      WHEN :pricetag = 'Great' 
      AND  tbl_monitor.price >= :para_price
      THEN  1
      WHEN :pricetag = 'Less' 
      AND  tbl_monitor.price <= :para_price
      THEN 1
      ELSE 0
    END