You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

优化订单年度收支差额查询(兼容DB2/Oracle11g及HibernateQL)

信贷流水查询优化求助

嗨,我现在有个信贷流水表的查询需求,想请教下能不能优化现有SQL提升性能,具体情况如下:

表结构

我的信贷流水表accountactivity结构和数据如下:

idordernoduebookingdatemovementtype
1o1130.5010.01.2017CREDIT
2o2250.9911.01.2017DEBIT
3o1120.4012.01.2017DEBIT
4o2277.8813.01.2017CREDIT
5o1105.2014.01.2017DEBIT

查询需求

我需要查询指定订单号和年份下,CREDIT总额减去DEBIT总额的差额。比如当传入orderno=o11、年份是2017时,预期结果是4.9(计算逻辑:30.50 - (20.40+5.20) = 4.9)。

现有实现

目前我用了两个子查询来实现这个逻辑,SQL语句如下:

SELECT (credit - debit) AS total
FROM (
    SELECT COALESCE(SUM(due), 0.0) AS credit
    FROM accountactivity
    WHERE orderno = :ordernoParam
      AND YEAR(bookingdate) = :bookingParam
      AND movementtype = 'CREDIT'
), (
    SELECT COALESCE(SUM(due), 0.0) AS debit
    FROM accountactivity
    WHERE orderno = :ordernoParam
      AND YEAR(bookingdate) = :bookingParam
      AND movementtype = 'DEBIT'
)

想请教的问题

能不能优化这个查询,去掉子查询来提升性能?要求必须兼容DB2和Oracle 11g,优先考虑用HibernateQL,原生SQL也可以接受。


内容的提问来源于stack exchange,提问作者Quoting Eddie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:06:37