просмотр таблицы ЕСЛИ условие CASE не работает должным образом - PullRequest
0 голосов
/ 14 января 2019

Просмотр таблицы: не работает должным образом. У меня есть две таблицы

  1. Deposits

  2. withdraws

Если:

Account no  = 101
balance = 100 $
Account no  = 102 
balance = 50 $

Когда я withdraw какой-то money Мне нравится этот аккаунт A/C 101 Сумма снятия 10$
Теперь результат: минус весь остаток на счете

Текущий баланс:

Account no  = 101
balance = 90 $ -10 $ 
Account no  = 102 
balance = 40 $ -10 $ // But 50

каждый счет минус депозитный баланс

CREATE VIEW main_balance_new as select account_no as account_no,
 SUM(deposit_amount)-(select 
  CASE 
    WHEN withdraw_amount IS NULL THEN 0
   ELSE SUM(withdraw_amount)
  END
  from withdraws) as balance from deposits group by account_no 

Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 14 января 2019

Я думаю, вам нужно объединить таблицы пополнения и снятия по отдельности:

CREATE VIEW d_view AS
SELECT account_no, SUM(deposit_amount) AS deposit_sum
FROM deposits
GROUP BY account_no

CREATE VIEW w_view AS
SELECT account_no, SUM(withdraw_amount) AS withdraw_sum
FROM withdraws
GROUP BY account_no

CREATE VIEW main_balance_new AS
SELECT
    d.account_no,
    d.deposit_sum - COALESCE(w.withdraw_sum, 0) AS balance
FROM d_view d
LEFT JOIN w_view w
    ON d.account_no = w.account_no;

Этот ответ оставляет открытой возможность того, что данная учетная запись появляется только в депозите, но не при выводе, таблица.

Edit:

Если вам нужно представление, используйте отдельные представления, чтобы обойти проблему подзапроса.

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