两个字段的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总和的主要内容,如果未能解决你的问题,请参考以下文章

两个表的总和的sql总和

Django聚合:两个字段相乘的总和

如何查询mysql一个字段的最大值的总和

使用pymongo根据一个值查询两个字段的总和

一个带有两个where子句的查询中的两个sql总和[重复]

聚合查询中由另一个字段分组的两个 int 数组的总和