列表项
我在下面附加了查询,我需要根据以下条件过滤数据。仅当从各个表传递参数时,才会显示输出。
SELECT
(SELECT 'Static Field') AS account_type,
(SELECT
COALESCE(SUM(ln.amount), 0)
FROM
ln
WHERE
AND ln.brch_id = $P{PARA_ID}
AND ln.date < $P{PARAM_FROM_DATE}
AND $P{PARA_Account_Type} = 'Static Field') AS debit_amount,
(SELECT
COALESCE(SUM(pd.paid_amount), 0)
FROM
pd,
ln
WHERE
pd.loan_id = ln.id AND ln.brch_id = $P{PARA_ID}
AND pd.paid_date < $P{PARAM_FROM_DATE}
AND $P{PARA_Account_Type} = 'Static Field') AS credit_amount
having
account_type = 'Static Field'
输出应为: 我希望只有在传递了相应参数的情况下,才根据上述不同条件得出的值之和,如果未传递相应参数,则不会显示该行
答案 0 :(得分:0)
您的查询很有趣,因为它是一个没有FROM的SELECT,这就是为什么您不能使用WHERE或HAVING进行过滤的原因。
当您的查询是没有任何FROM的SELECT时,总是返回准确的1条记录。
一种快速的解决方案是,向查询中添加一个简单的FROM行,如下所示,该行具有1行,然后使您能够使用HAVING进行过滤。
FROM ( select 1 as justarow ) r
HAVING account_type = 'Static Field'