SQL сумма двух полей - PullRequest
       3

SQL сумма двух полей

0 голосов
/ 30 сентября 2019

У меня есть таблица со следующими полями

vchnrno credit debit amount
JV1      BA10   0     100 
JV1      BA11   0      10 
JV1       0     BC10   90
JV1       0     BC11   20

Обычно сумма кредитной стороны = сумма дебетовой стороны для каждого СП здесь

  1. кредит = сумма BA10 +BA11 = 110

  2. дебет = сумма BC10 + BC 11 = 110

Я хочу найти все СП, чья сумма дебета - суммакредит> 0

1 Ответ

2 голосов
/ 30 сентября 2019

Похоже, 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), поэтому он все равно не будет возвращен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...