Суммируя два столбца, затем вычитая суммы

Вот моя таблица.

pk |  transactionID
   |  description
   |  transactionDate
   |  transactionAmount
   |  accountRecieve
   |  accountSend

Это мои колонки. Мне нужно найти баланс с учетом accountNumber через запрос. Для этого мне нужно SUM transactionAmount, где accountSend = 127, а затем SUM transactionAmount, где accountRecieve = 127, а затем вычесть первую сумму из второй суммы и показать ее в одном результате.

Я могу это объяснить, но понятия не имею, как это выполнить в SQL. Может ли кто-нибудь помочь.

Для справки в будущем правильный тег для Access - ms-access.

Nick 21.10.2018 09:01
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
1
54
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Один из вариантов использует условное агрегирование:

SELECT
    SUM(IIF(accountReceive = 127, transactionAmount, 0)) -
    SUM(IIF(accountSend = 127, transactionAMount, 0)) AS diff
FROM yourTable;

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

Доступ не поддерживает CASE

Rhys Swansbra 21.10.2018 08:58

@RhysSwansbra Я, должно быть, пропустил тег доступа. Ответ обновлен.

Tim Biegeleisen 21.10.2018 09:00

Вы также можете выразить это с помощью switch:

SELECT SUM(SWITCH(accountReceive = 127, transactionAmount
                  accountSend = 127, - transactionAMount, 0,
                  1=1, 0
                 )
          ) AS diff
FROM yourTable;

Это использует только один SUM() и более аналогично использованию CASE в других базах данных.

Другие вопросы по теме