如何在子查询外使用 having 子句?

How can I use having clause outside the subquery?

列表项

我在下面附上了我的查询,我需要根据以下条件过滤数据。仅当参数从相应的 table.

传递时才显示输出
 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'

输出应该是: 我希望仅当传递相应参数时基于上述不同条件的值的总和如果未传递相应参数则不会显示行

您的查询很有趣,因为它是一个没有 FROM 的 SELECT,这就是为什么您不能使用 WHERE 或 HAVING 进行过滤的原因。

当您的查询是 SELECT 而没有任何 FROM 时,它总是 returns 恰好 1 条记录。

一个快速的解决方法是仅向您的查询添加一个简单的 FROM,如下所示,这样您就可以使用 HAVING 进行过滤。

FROM  ( select 1 as justarow ) r
HAVING account_type = 'Static Field'