在Oracle 12(和APEX)中,我遇到了WHERE子句中的CASE語句問題。該場景是主表,ORDER和PRODUCTS_BOUGHT表,因此這是一對多關係。我有一個報告,在PRODUCTS_BOUGHT上有一個過濾器。過濾器填充名爲P36_PRODUCT_LISTING的綁定變量/ APEX頁面項。如果用戶選擇給定產品,我希望報告只顯示那些包含給定產品的訂單。該過濾器包含單詞'All',不應該做任何過濾,以及我們攜帶的每件產品。Oracle:在Where子句中使用Case語句
我的SQL語句是
Select distinct
:P36_PRODUCT_LISTING,
LISTAGG(product_name, ', ') WITHIN GROUP (ORDER BY product_name) OVER (PARTITION BY B.SALES_ORDER_NUMBER) AS products,
...
from ORDER A, PRODUCTS_BOUGHT B
where
A.SALES_ORDER_NUMBER = B.SALES_ORDER_NUMBER
and
case when
:P36_PRODUCT_LISTING = 'All' then 1 = 1
else a.SALES_ORDER_NUMBER IN (SELECT SALES_ORDER_NUMBER from PRODUCTS_BOUGHT where PRODUCT_NAME = :P36_PRODUCT_LISTING) end
當我運行的聲明,我得到的錯誤是缺少關鍵字。 我在做什麼錯?
使用AND OR的/不是這樣的! – jarlh