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

如何在SQL Server中区分借贷账户并统计账户收支总额

解决方案

要统计每个账户的总入账(Total_Credit_Amount)和总出账(Total_Debit_Amount),可以通过以下几种SQL实现方式:

方法一:使用UNION ALL合并账户后聚合(通用所有SQL方言)

这种方式先将每笔交易的入账、出账账户分别拆解为独立记录,再统一分组汇总,能覆盖所有出现过的账户:

WITH all_accounts AS (
    -- 提取所有入账账户及对应金额
    SELECT Credit_Account AS account, Amount AS credit_amount, 0 AS debit_amount
    FROM transactions
    UNION ALL
    -- 提取所有出账账户及对应金额
    SELECT Debit_Account AS account, 0 AS credit_amount, Amount AS debit_amount
    FROM transactions
)
SELECT
    account AS `Distinct Credit/Debit Acc`,
    SUM(credit_amount) AS Total_Credit_Amount,
    SUM(debit_amount) AS Total_Debit_Amount
FROM all_accounts
GROUP BY account
ORDER BY account;

方法二:条件聚合结合子查询

和方法一逻辑类似,通过标记账户类型后聚合:

SELECT
    account AS `Distinct Credit/Debit Acc`,
    SUM(CASE WHEN account_type = 'credit' THEN amount ELSE 0 END) AS Total_Credit_Amount,
    SUM(CASE WHEN account_type = 'debit' THEN amount ELSE 0 END) AS Total_Debit_Amount
FROM (
    SELECT Credit_Account AS account, Amount, 'credit' AS account_type FROM transactions
    UNION ALL
    SELECT Debit_Account AS account, Amount, 'debit' AS account_type FROM transactions
) AS account_transactions
GROUP BY account
ORDER BY account;

方法三:全外连接聚合结果(适用于支持FULL OUTER JOIN的数据库)

分别统计入账、出账账户的总额,再通过全外连接合并结果,确保无遗漏:

SELECT
    COALESCE(c.account, d.account) AS `Distinct Credit/Debit Acc`,
    COALESCE(c.total_credit, 0) AS Total_Credit_Amount,
    COALESCE(d.total_debit, 0) AS Total_Debit_Amount
FROM (
    SELECT Credit_Account AS account, SUM(Amount) AS total_credit
    FROM transactions
    GROUP BY Credit_Account
) c
FULL OUTER JOIN (
    SELECT Debit_Account AS account, SUM(Amount) AS total_debit
    FROM transactions
    GROUP BY Debit_Account
) d ON c.account = d.account
ORDER BY COALESCE(c.account, d.account);

说明

单独使用CASE语句容易失败的原因是:如果直接从原表按单一账户字段分组,会漏掉仅出账或仅入账的账户。上述方法通过合并所有账户维度,确保每个出现过的账户都被统计到,同时正确计算两类金额的总和。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 09:06:37