我的代码是这样的..
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'
我该怎么解决这个问题?非常感谢提前:)
答案 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