两个字段的SQL总和
Posted
技术标签:
【中文标题】两个字段的SQL总和【英文标题】:SQL sum of two fields 【发布时间】:2019-09-30 06:00:10 【问题描述】:我有一个包含以下字段的表格
vchnrno credit debit amount
JV1 BA10 0 100
JV1 BA11 0 10
JV1 0 BC10 90
JV1 0 BC11 20
通常,每个合资企业的贷方总和 = 借方总和 这里
信用 = BA10+ BA11 = 110 的总和
借方 = BC10 + BC 11 = 110
我想查找所有借方总和 - 贷方总和 >0 的合资企业
【问题讨论】:
贷方是否不可能>借方? 【参考方案1】:看起来SUM
+ CASE
可能会完成这项工作。方法如下:
SQL> with test (vchnrno, credit, debit, amount) as
2 (select 'JV1', 'BA10', '0' , 100 from dual union all
3 select 'JV1', 'BA11', '0' , 10 from dual union all
4 select 'JV1', '0' , 'BC10', 90 from dual union all
5 select 'JV1', '0' , 'BC11', 20 from dual union all
6 --
7 select 'xxx', 'XX20', '0' , 50 from dual union all
8 select 'xxx', '0' , 'xx30', 70 from dual
9 )
10 select vchnrno, sum_credit, sum_debit, sum_debit - sum_credit diff
11 from (select vchnrno,
12 sum(case when credit <> '0' then amount end) sum_credit,
13 sum(case when debit <> '0' then amount end) sum_debit
14 from test
15 group by vchnrno
16 )
17 where sum_debit - sum_credit > 0;
VCH SUM_CREDIT SUM_DEBIT DIFF
--- ---------- ---------- ----------
xxx 50 70 20
SQL>
我将vchnrno = xxx
包含在样本数据中,因为JV1
不符合条件 (sum of debit = sum of credit
),因此无论如何都不会返回。
【讨论】:
以上是关于两个字段的SQL总和的主要内容,如果未能解决你的问题,请参考以下文章