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