Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-03-2011
PacoPepe PacoPepe is offline
Miembro
 
Registrado: ene 2006
Ubicación: Córdoba, España
Posts: 86
Poder: 19
PacoPepe Va por buen camino
Question consulta para resumen mensual

Tengo una tabla de Recepcion que recoge el material que entra a diario.
Necesito hacer un informe resumen que contenga las entradas desde el dia 1 hasta el dia 31 de cada mes, de tal forma que ponga la suma de las entradas de material de cada dia y 0 los dias que no entre nada (por ejemplo, los domingos)

Me he creado una tabla auxiliar llamada DIAS en la que incluyo 31 registros, desde el 1 hasta el 31

Hago la siguiente consulta (la he simplificado un poco para que aparezcan sólo los datos para el mes 12)

Código SQL [-]
select d.dia, rm.suma from dias d
left join
(select extract(day from fecha) as dia, extract(month from fecha) as mes, sum(kgs) as suma
           from RECEPCION
where ano = 2010
group by dia, mes ) as rm  on d.iddia = rm.dia
where rm.mes = 12

Y el resultado que obtengo es sólo para los días en que he tenido Recepción de mercancia
Responder Con Cita
  #2  
Antiguo 17-03-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
mm que tal si pruebas haciendo la consulta de otra manera

captutra los datos de la tabla auxiliar DIAS y relacionala mediante el letf join con la tabla Recepcion

Código SQL [-]
 
Select Dia.Dia, R.Sum
from Dias
Left Join Recepcion R on Dia.DIA = Recepcion.DIA
Where mont(DIA.DIA) = 12
OJO... he colocado campos... que no tienen relacion directa con tu ejemplo...
prueba y nos comentas
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #3  
Antiguo 18-03-2011
PacoPepe PacoPepe is offline
Miembro
 
Registrado: ene 2006
Ubicación: Córdoba, España
Posts: 86
Poder: 19
PacoPepe Va por buen camino
No acabo de entender lo que me dices.
Si entiendo bien lo que me dices es justo lo que he hecho pero no me funciona.

Ten en cuenta, que cada dia tengo muchas entradas, por tanto lo primero que tengo que hacer es sumar las entradas diarias. Por eso, del campo fecha extraigo el dia y el mes al que pertenece la entrada y lo sumo

Un saludo
Responder Con Cita
  #4  
Antiguo 18-03-2011
PacoPepe PacoPepe is offline
Miembro
 
Registrado: ene 2006
Ubicación: Córdoba, España
Posts: 86
Poder: 19
PacoPepe Va por buen camino
Además, lo que no entiendo es que si pongo left join, el resultado me debería incluir todos los regirstros de la tabla situada a la izquierda ¿o no?

Un saludo
Responder Con Cita
  #5  
Antiguo 18-03-2011
PacoPepe PacoPepe is offline
Miembro
 
Registrado: ene 2006
Ubicación: Córdoba, España
Posts: 86
Poder: 19
PacoPepe Va por buen camino
He probado lo siguiente

Código SQL [-]
select d.dia, sum(r.kgs) from dias d
left join recepcion r on d.iddia = extract(day from r.fecha)
where extract(month from r.fecha) = 12 and ano = 2010
group by d.dia

y el resultado es exactamente el mismo.

Por cierto la bbdd es Firebird 2.1
Responder Con Cita
  #6  
Antiguo 18-03-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
A ver
acabo de hacer una prueba
he creado 2 tablas
1 llamada DIA que contiene la fechas del 1 al 31 y la otra llamada consumo
que contiene los kilos consumidos por dia

Código SQL [-]
Select D.Dia, Sum(C.Kilos) from Dias D
left join Consumo C on D.Dia = C.Dia
group by D.Dia

en la tabla consumo existe esta informacion
[quote]
consumo..........
Dia......................kilos
01/01/2011..........10
01/01/2011.........20
05/01/2011........6
cuando ejecuto el query lo que hace es...
de la tabla DIA mostrara todos los dias del 1 al 31 y tambien agrupara todas las sumas de la tabla consumo que sean del mismo dia

eso quiere decir que en el dia :
01/01/2011 acumulara 30
02/01/2011 acumulara 0
03/01/2011 acumulara 0
04/01/2011 acumulara 0
05/01/2011 acumulara 6
......
......
......

no es eso lo que quieres? que muestre o (Cero) cuando no haya consumo?
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #7  
Antiguo 23-03-2011
PacoPepe PacoPepe is offline
Miembro
 
Registrado: ene 2006
Ubicación: Córdoba, España
Posts: 86
Poder: 19
PacoPepe Va por buen camino
En las respuestas que me habeis dado, la solución de gluglu es mejor que la mia.

Yo creo una tabla auxiliar DIAS con 31 dias, pero de esta forma supongo que todos los meses tienen 31 días.
Sin embargo, gluglu con su
PROCEDURE AUTO_INC_DATE

va avanzado dia a dia real, de esta forma tiene en cuenta los días reales de cada mes, e incluso los años bisiestos

Lo usaré
Responder Con Cita
  #8  
Antiguo 23-03-2011
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Me alegro que te sirva !
__________________
Piensa siempre en positivo !
Responder Con Cita
  #9  
Antiguo 23-03-2011
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Yo tengo Firebird 2.1 instalado también.

He creado una tabla Días, y otra tabla Recepción. He ejecutado tu consulta que indicas arriba, y a mí me devuelve registros en NULL para todos aquellos días en los que no ha habido recepción de mercancías.
__________________
Piensa siempre en positivo !

Última edición por gluglu fecha: 23-03-2011 a las 17:20:59.
Responder Con Cita
Respuesta



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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Resumen de Información PallyRS Impresión 2 10-03-2009 15:05:09
Resumen Abuelo7 Conexión con bases de datos 18 03-10-2008 11:27:45
Distribución de ventas mensual DarkDudae Varios 0 31-08-2006 14:30:14
Consulta resumen con subconsulta(ayuda) cmena SQL 5 01-07-2004 00:18:21
Consulta Mensual en semanas el_enigma1 SQL 5 17-05-2004 15:43:59


La franja horaria es GMT +2. Ahora son las 15:40:16.


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