я делаю отчет яшмы, который фильтрует по нескольким параметрам, которые являются необязательными, с использованием оператора case в предложении where. если параметр не введен, я хочу, чтобы набор результатов удовлетворял другим параметрам, включая нулевые значения.
Я сделал оператор case в предложении where. За исключением моего последнего условия, я получаю результаты, которые хочу. когда параметр пуст, я хочу, чтобы в результате были выполнены другие условия b, включая нулевые записи, которые удовлетворяются другим условием в предложении where
SELECT
cert.ice_certificate_date_issued AS "START_DATE",
cert.ice_current_license_expiry AS "END_DATE",
--licence_type,
ib.name AS "SHOP",
cert.ice_license_fee AS "SUPERMARKETPRICE",
dist.name AS "DISTRICT",
,iba.ice_price)
,0) AS "ACTIVITY_PRICE",
(select nvl(sum(taxamt),0) from c_ordertax where c_order_id = cert.c_order_id) AS "TAXAMT"
FROM icp_certificate cert
LEFT JOIN c_order ord ON cert.c_order_id = ord.c_order_id
LEFT JOIN icp_business ib ON cert.ice_foreign_trx_entity_id =
ib.icp_business_id
LEFT JOIN c_bpartner cbp ON cert.c_bpartner_id = cbp.c_bpartner_id
LEFT JOIN c_bpartner_location cbpl ON cert.c_bpartner_id =
cbpl.c_bpartner_id
LEFT JOIN icp_district dist ON cbpl.ice_district_id =
dist.ice_district_id
LEFT JOIN c_location loc on ib.c_location_id = loc.c_location_id
LEFT JOIN icp_business_activity_link ibal ON ib.icp_business_id =
ibal.icp_business_id
LEFT JOIN icp_business_activity iba ON ibal.icp_business_activity_id =
iba.icp_business_activity_id
WHERE
cert.ad_client_id = 1000555 AND
cert.ad_org_id = 2010520 AND
cert.icp_certificate_status = '01' AND
cert.isactive = 'Y' AND
cert.ice_certificate_type = '0051' AND
cert.ice_currentcertificate = 'Y' AND
cert.icp_certificate_date_issued BETWEEN '01-JAN-19' AND '23-MAY-19' AND
ib.ICp_District_ID = CASE WHEN 0>0 THEN 46445665 else ib.ICp_District_ID
END
- я хочу, чтобы остальная часть включала запись, где ib.ICp_District_ID равен нулю
возвращает результат всего, что находится в других условиях, включая записи с идентификатором района, равным нулю