yo,
der unterschied zwischen den beiden abfragen bei dir ist, dass du im ersten fall über zwei tabellen gehst und im zweiten fall über drei. dadurch erhöht sich eventuell die anzahl der datensätze, über die dann letztlich gruppiert wird. die folge ist natürlich andere werte bei der aggregation. um dir das vor augen zu führen, kannst du ja beide abfragen ohne die gruppierung ausführen und nur die anzahl der datensätze mit COUNT() zählen.
noch drei hinweise, deine namensgebung deiner tabellen ist nicht sehr vorteilhaft und auch deine schreibweise der abfrage ist etwas unübersichtlich. folgende schreibweise macht das gleiche und ist viel schöner zu lesen. ausserdem wird nicht jedes dbms über den aliasnamen gruppierungen zulassen.
SELECT year(datum) as group_a, month(datum) as group_b, sum(wert_a), sum(wert_b)
FROM tab_datum
INNER JOIN tab_a ON tab_datum.id=tab_a.datum_id
INNER JOIN tab_b ON tab_datum.id=tab_b.datum_id
WHERE tab_datum.datum >= '2007-01-01'
GROUP BY group_a, group_b
Ilja