Я пытаюсь суммировать по группам между двумя таблицами. В основном я пытаюсь показать только таблицу «Счетчик» с каждым 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 |
+-----+--------------+


Вам нужен 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
Работает ваш код! я заменяю «внутреннее соединение» на «левое соединение», чтобы получить все строки таблицы «Счетчик». Теперь, как отобразить 0, когда на этом счете нет транзакций?
Используйте «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
@ RobertoPeña, обратите внимание, я добавил в свой ответ пример, встроенный в Access
Я все через несколько часов нахожу это! это:
"select p.Code,(SELECT SUM(b.Money) FROM MoneyMovements b WHERE b.Bank_code = p.Code) as SUM_TOTAL from Count p"