我正在 BI Publisher 中开发一个接受用户输入作为搜索条件的报告,并将结果呈现为 pdf 模板。用户输入用作 SQL 查询中的参数我必须进行搜索
我正在使用以下数据进行测试
PER_FNAME PER_MNAME PER_LNAME
Stuart Easterly Adams
Stuart Ronald Adams
Stuart Ronald Adams
Stuart Adams
Stuart Adams
结果基于用户输入,需要符合以下规则/条件:
用户将输入中间名或将其留空(空)
如果提供了中间名(非空),则返回匹配的中间名并且中间名为空
例如,如果用户输入 'Ronald' 结果应该是
PER_FNAME PER_MNAME PER_LNAME Stuart Ronald Adams Stuart Ronald Adams Stuart Adams Stuart Adams
如果中间名为 null,则返回所有中间名值,包括 null
例如,如果用户在中间名字段中没有输入任何内容,则结果应该是
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 中同时满足这两种条件?如果是这样,我该如何实现它?