Ver Mensaje Individual
  #5  
Antiguo 07-09-2012
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Reputación: 20
movorack Va camino a la famamovorack Va camino a la fama
Hola jooooseph.

Para hacer esto tienes muchas posibilidades y como no das mucha información acerca de como estás construyendo el reporte si con un reporteador o si debe ir en archivos de texto, si lo debes hacer desde algun programa o desde un procedimiento almacenado. ni siquiera dices que motor de DB usas... en fin.

Si lo hicieras con una consulta (sería complicado pero se podria contemplar) tendrias que hacer primero una consulta base de clientes esto dejarla en una subconsulta y sobre esta hacer subconsultas por cada mes.

Algo así:

Código SQL [-]
SELECT
  S1.IDCLIENTE,
  (SELECT SUM(MONTO) FROM VENTAS WHERE IDCLIENTE = S1.IDCLIENTE AND DATEPART(FECHAVENTA, DP_MONTH) = 1) -- ENERO
  ..  
  (SELECT SUM(MONTO) FROM VENTAS WHERE IDCLIENTE = S1.IDCLIENTE AND DATEPART(FECHAVENTA, DP_MONTH) = 12) -- DICIEMBRE
FROM (
  SELECT DISTINCT IDCLIENTE
  FROM CLIENTES
  WHERE FECHA BETWEEN FECHA1 AND FECHA 2
) AS S1

Claro está esta consulta tendrá un costo bastante alto por lo que me iria a la siguiente opción si tu motor lo permite

Si lo hicieras desde un sp que alimente una tabla podrias primero buscar los clientes que tuvieron registros a lo largo del año y luego procesarlos en los meses respectivos y obtenida la linea de registro llevarla a la tabla para despues procesarla en algun programa.

En el caso de que lo hicieras desde el programa seria lo mismo que el SP pero obviando el registro en tabla y llevandolo directamente al diseño del reporte.

Espero poder haberte colaborado.

Un saludo.
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita