рассчитать сумму остатка и вставить другую таблицу - PullRequest
0 голосов
/ 07 декабря 2018

Мне нужна помощь в построении SQL-запроса, у меня ниже двух запросов, я хочу объединить сумму дебета, вычтенную из кредита, и затем вставить результат в виде баланса в другую таблицу

select sum(amount)
from ACCOUNT_TRANSACTIONS
where CUSTOMER_USER_NAME='55555' and transaction_type='credit' and account_type='customer' and IS_DELETED='false' 

select sum(amount)
from ACCOUNT_TRANSACTIONS
where CUSTOMER_USER_NAME='55555' and transaction_type='debit' and account_type='customer' and IS_DELETED='false'

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Можно использовать CROSS APPLY

select a.*, b.CreditSum, c.DebitSum
from ACCOUNT_TRANSACTIONS a
cross apply
   (select sum(amount) as CreditSum
    from ACCOUNT_TRANSACTIONS
    where CUSTOMER_USER_NAME='55555' and transaction_type='credit' and account_type='customer' and IS_DELETED='false'
    ) b
cross apply
   (select sum(amount) as DebitSum
    from ACCOUNT_TRANSACTIONS
    where CUSTOMER_USER_NAME='55555' and transaction_type='debit' and account_type='customer' and IS_DELETED='false'
    ) c
where a.CUSTOMER_USER_NAME='55555' and a.account_type='customer' and a.IS_DELETED='false'
0 голосов
/ 07 декабря 2018

Вы можете сделать это, используя условное агрегирование:

select sum(case when transaction_type = 'credit' then amount when transaction_type = 'debit' then - amount end) as balance
from ACCOUNT_TRANSACTIONS
where CUSTOMER_USER_NAME = '55555' and
      account_type = 'customer' and
      IS_DELETED = 'false' ;

Затем вы вставите это в другую таблицу, используя insert, хотя я не уверен, как будет полезно использовать одно значение в одной строке.

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