![]() |
Prueba con esto
De todas maneras, antes de hacer nada, comprueba tal como te han dicho los compañeros que las joins te dan la información que quieres. Es decir, un left join o un right join dependiendo de dónde pongas la tabla de días, deberá darte al menos un registro de cada día. Si en la tabla de datos no hay registros, el valor que sumas deberá ser nulo. haz esto: debe ofrecerte al menos un registro por día, tal como comentaba. A partir de aquí pones el group by , y luego formateas en filas o columnas tal y como ta han comentado. Nos cuentas. Saludos |
Creo que no me he explicado bien sobre los JOIN.
Yo sé como funcionan los diferentes tipos de JOIN, llevo mucho tiempo usándolos, pero en esta ocasión y por algún motivo, no funcionan adecuadamente. Pongo un ejemplo Tengo la siguiente tabla de Recepción Código:
Dia Kgs Código:
Dia Kgs Y hago la siguiente consulta Código SQL [-]select d.dia, rm.suma from dias d left join (select extract(day from fecha) as dia, sum(kgs) as suma from Recepcion where ano = 2010 group by dia ) as rm on d.iddia = rm.dia Y el resultado es Código:
Dia Kgs Código:
Dia Kgs Un saludo |
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é |
Me alegro que te sirva ! :)
|
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. |
[quote=PacoPepe;394347]
esta consulta la hice de esta manera y si me sale como tu quieres
|
Me podeis enviar la bbdd que habeis hecho
Gracias :confused: |
Aplico :
y el resultado que obtengo es :
|
Yo creo que es porque estás haciendo mal la join. No sé porqué metes otra select.
Prueba esto. Debes tener la tabla días con 31 registros.
Luego nos comentas. Saludos |
Cita:
Select D.DIA, sum(R.Kgs) from Dias D left join Recepcion R on D.dia=extract(day from R.fecha) where extract(month from R.fecha)=el_mes and extract(year from R.fecha)=el_año group by D.dia Lo siento pero al editar el post no consigo que se vea como sentencia SQL |
Muchas gracias gluglu, por fin funciona :p:p:p:p:p:p:p:p:p
Os agradezco a todos los que me habeis respondido vuestro interés por resolverme el problema Un saludo a todos |
La franja horaria es GMT +2. Ahora son las 20:05:44. |
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