Как сравнить столбец с параметром в Oracle? - PullRequest
0 голосов
/ 05 августа 2011

мой код выглядит следующим образом ..

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,

wat iхочу сделать, если пользовательский ввод 'Greater' в отчетах будет показывать цены выше ': para_price', как бы это исправить?Заранее большое спасибо:)

Ответы [ 4 ]

4 голосов
/ 05 августа 2011

Попробуйте это

WHERE 
(:pricetag = 'Great' AND tbl_monitor.price >= :para_price)
OR
(:pricetag = 'Less' AND tbl_monitor.price <= :para_price)
3 голосов
/ 05 августа 2011

Оператор SQL CASE (кроме тех синтаксических ошибок, которые вы делаете) не является инструкцией управления потоком, как в C или PHP. Это выражение, которое возвращает значение, а не способ решить, какая часть вашего кода будет выполнена.

Вы не хотели говорить, что вы пытаетесь выполнить или как это не удается, но похоже, что вам нужно простое выражение:

WHERE (:pricetag = 'Great' AND tbl_monitor.price >= :para_price)
OR (:pricetag = 'Less' AND tbl_monitor.price <= :para_price)
1 голос
/ 05 августа 2011

Попробуй так:

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)
0 голосов
/ 05 августа 2011
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
...