我正在BI Publisher中开发一个报告,该报告接受用户输入作为搜索条件,并将结果呈现为pdf模板。用户输入用作我必须进行搜索的SQL查询中的参数
我正在使用以下数据进行测试
PER_FNAME PER_MNAME PER_LNAME
Stuart Easterly Adams
Stuart Ronald Adams
Stuart Ronald Adams
Stuart Adams
Stuart Adams
结果基于用户输入,需要符合以下规则/条件:
用户将输入中间名或将其留空(null)
如果提供了中间名(非空),则返回中间名称,其中存在匹配且中间名称为空
E.g。如果用户输入'Ronald',结果应为
PER_FNAME PER_MNAME PER_LNAME
Stuart Ronald Adams
Stuart Ronald Adams
Stuart Adams
Stuart Adams
如果中间名为null,则返回所有中间名称值,包括null
E.g。如果用户在中间名称字段中不输入任何内容,则结果应为
PER_FNAME PER_MNAME PER_LNAME
Stuart Easterly Adams
Stuart Ronald Adams
Stuart Ronald Adams
Stuart Adams
Stuart Adams
到目前为止,我有以下sql
SELECT
PER_FNAME,
PER_MNAME,
PER_LNAME
FROM
(SELECT
Asset.ASSET_NUM AS BN_REN
FROM SIEBEL.S_ASSET Asset
WHERE
Asset.NAME = 'Business Names'
AND Asset.status_cd = 'Registered'
) Q1
LEFT JOIN
(SELECT
Asset.ASSET_NUM AS PER_ASSET,
Contact.FST_NAME AS PER_FNAME,
Contact.MID_NAME AS PER_MNAME,
Contact.LAST_NAME AS PER_LNAME
FROM siebel.s_asset_con aCon, siebel.s_asset Asset, siebel.s_contact Contact
WHERE Asset.row_id = aCon.asset_id
AND aCon.CONTACT_ID = Contact.ROW_ID
) Q2
ON Q1.BN_REN = Q2.PER_ASSET
WHERE
PER_FNAME = NVL(:FIRST_NAME, PER_FNAME)
AND (PER_MNAME IS NULL OR PER_MNAME = :MID_NAME)
AND PER_LNAME = NVL(:LAST_NAME, PER_LNAME)
如果用户输入中间名称,结果与预期一致,我得到空值和正确值。但是,当没有为中间名输入任何内容时,我只获得空值而不是所有值。
有没有办法满足一个sql中的两个条件?如果是的话,我该如何实现呢?