Сумма по группам между 2 таблицами

Я пытаюсь суммировать по группам между двумя таблицами. В основном я пытаюсь показать только таблицу «Счетчик» с каждым SUM () из группы «MoneyMovements» с помощью «Bank_code». Это возможно?. Я пробовал с левым соединением (включая "MoneyMovements" в "Count"). но я не понимаю, как разделить сумму ... Есть предложения ?. Я использую ACCESS 2007 в VB.NET

Table 'Count'
+----+--------------+
|Code|Bank          |
+----+--------------+
|1   |MACRO         |
+----+--------------+
|2   |Santender Rio |
+----+--------------+
|3   |Galicia       |
+----+--------------+

Table 'MoneyMovements'

+-----+--------------+
|Money|Bank_code     |
+-----+--------------+
|200  |1             |
+-----+--------------+
|300  |1             |
+-----+--------------+
|0    |2             |
+-----+--------------+
|500  |3             |
+-----+--------------+
|100  |3             |
+-----+--------------+

Response i Want:
+-----+--------------+
|Money|Bank          |
+-----+--------------+
|500  |MACRO         |
+-----+--------------+
|0    |Santender Rio |
+-----+--------------+
|600  |Galicia       |
+-----+--------------+
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
0
37
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Вам нужен join с group by, например:

Select c.Code, sum(m.Money) as Money
From Count c
inner join MoneyMovements m on c.Code = m.Bank_code
group by c.Code

Я все через несколько часов нахожу это! это: "select p.Code,(SELECT SUM(b.Money) FROM MoneyMovements b WHERE b.Bank_code = p.Code) as SUM_TOTAL from Count p"

Roberto Peña 16.11.2018 04:01

Работает ваш код! я заменяю «внутреннее соединение» на «левое соединение», чтобы получить все строки таблицы «Счетчик». Теперь, как отобразить 0, когда на этом счете нет транзакций?

Roberto Peña 16.11.2018 04:10

Используйте «Left join», чтобы получить все строки «Count», и Nz (), чтобы отобразить 0, когда в учетной записи нет транзакций:

Select c.Code, Nz(sum(m.Money),0) as Money
From Count c
LEFT JOIN MoneyMovements m on c.Code = m.Bank_code
group by c.Code

Access действительно не понравилось имя таблицы "Count", поэтому вместо этого я использовал Counts, вот что я сделал:

SELECT Counts.code, Nz(Sum(MoneyMovements.Money),0) AS SumOfMoney
FROM Counts LEFT JOIN MoneyMovements ON Counts.Code = MoneyMovements.bank_code
GROUP BY Counts.code;

это странно ... это вернуть мне что-нибудь ... Это работает: 'выберите c.Bank, (SELECT SUM (m.Money) FROM MoneyMovements m WHERE m.Bank_code = c.Code) как Total_money из графа c' Почему это работает а ваш нет? Я смущен. В первый раз я написал что-то вроде тебя, но не работает, через 6 часов я попробовал этот способ. поэтому я попробовал использовать функцию "Nz" в своем коде, но она не работает. Я использую Microsoft.ACE.OLEDB.12.0 и VB.NET

Roberto Peña 16.11.2018 09:28

@ RobertoPeña, обратите внимание, я добавил в свой ответ пример, встроенный в Access

Paul Maxwell 17.11.2018 00:40

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