Interpretando lo que quieres hacer...
Debes vincular las tablas por MesAño no por fecha, ese dato no lo tenemos directamente en las tablas originales por lo que debemos hacer sub-consultas para tenerlo y luego vincular por ese nuevo campo
Código SQL:
Ver originalSELECT MONTH(sbcVentas.fecha) & '/' & YEAR(sbcVentas.fecha) AS Fecha,
SUM(sbcVentas.Ventas) AS [Ventas Mensuales],
SUM(sbcVentas.CMV) AS CMV,
SUM(sbcVentas.Ventas-sbcVentas.CMV) AS [MARGEN DE CONTRIBUCION],
SUM(sbcGastos.Monotributo) AS MonotributoMensual
FROM (SELECT MONTH([Ventas].[fecha]) & '/' & YEAR([Ventas].[fecha]) AS MesAño,
Ventas.idCliente,
Ventas.idPedido,
Ventas.Fecha,
Ventas.Ventas,
Ventas.Descuento,
Ventas.Utilidad,
Ventas.CMV,
Ventas.idEnvio,
Ventas.info_Adicional
FROM Ventas) AS sbcVentas
LEFT JOIN
(SELECT MONTH([Gastos_Fijos].[fecha]) & '/' & YEAR([Gastos_Fijos].[fecha]) AS MesAño,
Gastos_Fijos.Fecha,
Gastos_Fijos.Descripcion,
Gastos_Fijos.Monotributo,
Gastos_Fijos.IIBB,
Gastos_Fijos.Personal,
Gastos_Fijos.Alquiler,
Gastos_Fijos.Inversiones,
Gastos_Fijos.Publicidad,
Gastos_Fijos.Luz,
Gastos_Fijos.Gas,
Gastos_Fijos.[Telefono + Internet],
Gastos_Fijos.Agua,
Gastos_Fijos.ABL,
Gastos_Fijos.Limpieza,
Gastos_Fijos.[Gastos Varios],
Gastos_Fijos.Perdidas
FROM Gastos_Fijos) AS sbcGastos
ON sbcVentas.MesAño = sbcGastos.MesAño
WHERE (((MONTH(sbcVentas.fecha)) BETWEEN 1 AND 12) AND ((YEAR(sbcVentas.fecha))=2010))
GROUP BY MONTH(sbcVentas.fecha) & '/' & YEAR(sbcVentas.fecha);
Segunda opción más simple pero acces no sabe representarlo en el asistente de consultas, apesar de saber resolverlo
Código SQL:
Ver originalSELECT MONTH(Ventas.fecha) & '/' & YEAR(Ventas.fecha) AS Fecha,
SUM(Ventas.Ventas) AS [Ventas Mensuales],
SUM(Ventas.CMV) AS CMV,
SUM(Ventas.Ventas-Ventas.CMV) AS [MARGEN DE CONTRIBUCION],
SUM(Gastos_Fijos.Monotributo) AS MonotributoMensual
FROM JOIN Ventas LEFT Gastos_Fijos
ON MONTH([ventas].[fecha]) & '/' & YEAR([ventas].[fecha])=MONTH([Gastos_Fijos].[fecha]) & '/' & YEAR([Gastos_Fijos].[fecha])
WHERE (((MONTH(Ventas.fecha)) BETWEEN 1 AND 12) AND ((YEAR(Ventas.fecha))=2010))
GROUP BY MONTH(Ventas.fecha) & '/' & YEAR(Ventas.fecha);
No se si es muy correcto u ortodoxo vincular por campos calculados de esta forma. Que access no sepa representarlo en el asistente no seria un dato a terner en cuenta...
No conozco tu negocio por lo que no se si esto es lo que quieres...
Así, si un mes hay ventas pero no gastos
saldran las ventas (LEFT JOIN), pero si un mes hay gastos pero no ventas
los gastos no saldran
LEFT JOIN Todas las ventas con us gastos
RIGHT JOIN Todos los gastos con sus ventas
INNER JOIN Solo las ventas que tengan gastos
Si se puede dar la situacion de gastos sin ventas dimelo tambien tiene solución... si monotributo es algo parecido al IVA no se dará....
Quim