Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-12-2005
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
Como Agrupar por Meses????

Tengo la siguiente sentencia SQL para Agrupar las Ventas por Meses dandole un rango de fechas:
Código SQL [-]
select coalesce(sum(imporfac),0)+
(select coalesce(sum(imporfac-ivadoc),0) from facturas
where
tipomov='FM' and
fechafac >='01.01.2003' and
fechafac <='28.02.2003' and
(tasaiva=1 or tasaiva=3 or ivadoc>0) and
desglodoc <> 1) 
TOTAL, f_month(FECHAFAC) from facturas
where
tipomov='FM' and
fechafac >='01.01.2003' and
fechafac <='28.02.2003' and
(tasaiva=1 or tasaiva=3 or ivadoc>0) and
desglodoc = 1
 
group by f_month(FECHAFAC)
order by f_month(FECHAFAC)

El problema que tengo es que si le doy un rango de fecha de más de 1 mes como en el ejemplo que pongo que es un rango de 2 meses, no me dan los TOTALES correctos

Resultado:
TOTAL F_MONTH
1200 1
400 2

Mandando un Rango de Fecha de 1 mes Ej. del '01.01.2003' al '31.01.2003'
El Resultado CORRECTO :
TOTAL F_MONTH
950 1

Por lo que me obliga hacer UNIONES por MES pero es lo que no quiero hacer, sólo quiero que UNA Sola consulta me devuelva los Concentrados de Ventas por meses pasandole el Rango de Fechas, si bien se muestra en la Sentencia SQL tengo una UDF f_month que me devuelve el Número de MES de la Fecha.

Agradezco cualquier sugerencia.

Por último edite 2 veces este Hilo para identar el código pero me lo desordena cuando lo GUARDO....

Última edición por AGAG4 fecha: 31-12-2005 a las 03:53:18.
Responder Con Cita
  #2  
Antiguo 31-12-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Francamente no entiendo muy bien cual es tu lógica para agrupar por meses, pero a mi me parece mas sencillo algo como:

Código SQL [-]
Select extract(year from fecha) anio, extract(month from fecha) mes,
       sum(imporfac)
  from facturas
 where fechafac between '2003-01-01' and '2003-02-28'
   and otrascondiciones
 group by 1, 2
 order by 1, 2;

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #3  
Antiguo 31-12-2005
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
Ok

Gracias Juan Antonio voy a probarlo.....

Saludos....
Responder Con Cita
  #4  
Antiguo 31-12-2005
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
ok

Que es lo que no entiende de la consulta????
Solo quiero que me despliege los datos como en el ejemplo siguiente:
TOTAL MES
950 1
1050 2
850 3
650 4
750 5
2950 6

El Problema que tengo como ya lo explique anteriormente es que no me da el TOTAL CORRECTO si le mando un rango de Fechas de màs de 2 meses, pero si le doy solo 1 MES el TOTAL es CORRECTO, a como lo explica usted tambièn me da el mismo ORDEN pero con los TOTALES Incorrectos, es decir si yo voy comparando Mes por Mes en la consulta por ejemplo del 01/01/2003 al 31/01/2003 ò 01/02/2003 al 28/02/2003 asi si me muestra los TOTALES correctos.
Lo màs seguro que en el segundo SELECT sea el del problema, a lo mejor ocupo mandarle como parametro la fecha del primer SELECT....

Gracias por su ayuda.

Feliz Año 2006

Saludos....
Responder Con Cita
  #5  
Antiguo 02-01-2006
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Pues sigo sin entender la lógica del segundo select... por que no mejor contas que es lo que queres conseguir?

Saludos.
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #6  
Antiguo 02-01-2006
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
Ok

En el primero Select hago la suma de las facturas que desglosan IVA, y en el segundo select SUMO las Facturas de CONTADO que no Desglosan IVA es por eso que hago la resta IMPORFAC-IVADOC, es decir al hacer una factura de contado el
IMPORFAC = SUBTOTAL+IVA
y cuando no se desglosa el IVA
IMPORFAC = SUBTOTAL
Por este motivo uso el segundo select.

Espero me haya explicado, sin o me explique hagamelo saber para dar otro ejemplo.

Feliz Año 2006.
Responder Con Cita
  #7  
Antiguo 11-01-2006
Avatar de jwmoreira
jwmoreira jwmoreira is offline
Miembro
 
Registrado: jun 2004
Posts: 83
Poder: 20
jwmoreira Va por buen camino
Post

Hola, mira si te sirve esto:
Código:
select case desglodoc when 1 coalesce(sum(imporfac-ivadoc),0) else coalesce(sum(imporfac),0) end  as total,f_month(FECHAFAC) from facturas
where tipomov='FM' 
and fechafac >='01.01.2003'
and fechafac <='28.02.2003' 
and (tasaiva=1 or tasaiva=3 or ivadoc>0) 
group by f_month(FECHAFAC)
order by f_month(FECHAFAC)
Saludos,
Jorge.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 19:23:25.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi