Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Como Agrupar por Meses???? (https://www.clubdelphi.com/foros/showthread.php?t=28753)

AGAG4 31-12-2005 02:50:20

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....

jachguate 31-12-2005 03:58:48

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.

;)

AGAG4 31-12-2005 17:03:16

Ok
 
Gracias Juan Antonio voy a probarlo.....

Saludos....:)

AGAG4 31-12-2005 18:22:40

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....

jachguate 02-01-2006 20:03:24

Pues sigo sin entender la lógica del segundo select... por que no mejor contas que es lo que queres conseguir?

Saludos.

AGAG4 02-01-2006 22:44:30

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.

jwmoreira 11-01-2006 18:21:36

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.


La franja horaria es GMT +2. Ahora son las 09:02:08.

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