Ver Mensaje Individual
  #5 (permalink)  
Antiguo 08/10/2010, 04:22
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Consulta Sql de 2 tablas

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 original
  1. SELECT MONTH(sbcVentas.fecha) & '/' & YEAR(sbcVentas.fecha) AS Fecha,
  2.              SUM(sbcVentas.Ventas) AS [Ventas Mensuales],
  3.              SUM(sbcVentas.CMV) AS CMV,
  4.              SUM(sbcVentas.Ventas-sbcVentas.CMV) AS [MARGEN DE CONTRIBUCION],
  5.              SUM(sbcGastos.Monotributo) AS MonotributoMensual
  6. FROM (SELECT MONTH([Ventas].[fecha]) & '/' & YEAR([Ventas].[fecha]) AS MesAño,
  7.                         Ventas.idCliente,
  8.                         Ventas.idPedido,
  9.                         Ventas.Fecha,
  10.                         Ventas.Ventas,
  11.                         Ventas.Descuento,
  12.                         Ventas.Utilidad,
  13.                         Ventas.CMV,
  14.                         Ventas.idEnvio,
  15.                         Ventas.info_Adicional
  16.              FROM Ventas) AS sbcVentas
  17. LEFT JOIN
  18.            (SELECT MONTH([Gastos_Fijos].[fecha]) & '/' & YEAR([Gastos_Fijos].[fecha]) AS MesAño,
  19.                          Gastos_Fijos.Fecha,
  20.                          Gastos_Fijos.Descripcion,
  21.                          Gastos_Fijos.Monotributo,
  22.                          Gastos_Fijos.IIBB,
  23.                          Gastos_Fijos.Personal,
  24.                          Gastos_Fijos.Alquiler,
  25.                          Gastos_Fijos.Inversiones,
  26.                          Gastos_Fijos.Publicidad,
  27.                          Gastos_Fijos.Luz,
  28.                          Gastos_Fijos.Gas,
  29.                          Gastos_Fijos.[Telefono + Internet],
  30.                          Gastos_Fijos.Agua,
  31.                          Gastos_Fijos.ABL,
  32.                          Gastos_Fijos.Limpieza,
  33.                          Gastos_Fijos.[Gastos Varios],
  34.                          Gastos_Fijos.Perdidas
  35.                  FROM Gastos_Fijos) AS sbcGastos
  36. ON sbcVentas.MesAño = sbcGastos.MesAño
  37. WHERE (((MONTH(sbcVentas.fecha)) BETWEEN 1 AND 12) AND ((YEAR(sbcVentas.fecha))=2010))
  38. 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 original
  1. SELECT MONTH(Ventas.fecha) & '/' & YEAR(Ventas.fecha) AS Fecha,
  2.              SUM(Ventas.Ventas) AS [Ventas Mensuales],
  3.              SUM(Ventas.CMV) AS CMV,
  4.              SUM(Ventas.Ventas-Ventas.CMV) AS [MARGEN DE CONTRIBUCION],
  5.             SUM(Gastos_Fijos.Monotributo) AS MonotributoMensual
  6. FROM  JOIN Ventas LEFT Gastos_Fijos
  7. ON MONTH([ventas].[fecha]) & '/' & YEAR([ventas].[fecha])=MONTH([Gastos_Fijos].[fecha]) & '/' & YEAR([Gastos_Fijos].[fecha])
  8. WHERE (((MONTH(Ventas.fecha)) BETWEEN 1 AND 12) AND ((YEAR(Ventas.fecha))=2010))
  9. 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

Última edición por quimfv; 08/10/2010 a las 04:39