SQL单查询实现:按ID校验DR与CR金额总和并生成Balanced列
如何用单条SQL校验同一ID的借贷金额是否匹配?
针对你需要校验同一ID下DR(借方)和CR(贷方)金额总和是否匹配的需求,我给你整理了一个直接可用的SQL查询,能完美生成带Balanced标识的结果:
USE [data] GO SELECT ID, SUM(CASE WHEN TransactionType = 'DR' THEN Amount ELSE 0 END) AS TotalDebit, SUM(CASE WHEN TransactionType = 'CR' THEN Amount ELSE 0 END) AS TotalCredit, CASE WHEN SUM(CASE WHEN TransactionType = 'DR' THEN Amount ELSE 0 END) = SUM(CASE WHEN TransactionType = 'CR' THEN Amount ELSE 0 END) THEN 'Y' ELSE 'N' END AS Balanced FROM [dbo].[你的交易表名] -- 替换成你实际使用的表名 GROUP BY ID;
逻辑说明:
- 用
SUM(CASE...)分别统计每个ID下借方和贷方的总金额,非对应类型的金额按0计算,避免干扰总和 - 通过外层
CASE语句直接对比两个总和,相等返回'Y',不匹配返回'N' - 按ID分组确保每个ID的结果独立计算
如果你的表里交易类型字段不是TransactionType、金额字段不是Amount,直接替换成你实际的字段名就行,适配性很强。
内容的提问来源于stack exchange,提问作者Tiger
相关产品推荐
相关产品推荐

