¿Insertar registro si no existe en consulta?

Buenos días, les agradecería me indicaran cómo puedo hacer lo siguiente:
Tengo una consulta de selección que me genera unos datos totalizados por meses dentro de cada año. Resultado: Año 2008: enero 5 - febrero 10 - marzo 0 - abril 25 - mayo 0 ... Y así sucesivamente.
Posteriormente, mediante una consulta de eliminación y otra de datos anexados, actualizo una tabla con estos datos a fecha de proceso.
Me ocurre que si en un año (2010) no existe aún ningún dato en todo el año, es decir, los ficheros fuentes vinculados no disponen de ningún registro de ningún mes del año, en la consulta no se genera el año y necesito que sí se genere y poner todos sus meses con datos a 0.
¿Se puede hacer en la consulta? .. ¿O debería hacerse posteriormente en la tabla que se ha actualizado?... ¿Modulo? ¿Macro?... Estoy atrancado en este punto y agradecería alguna idea..
Gracias anticipadas.

1 Respuesta

Respuesta
1
¿Cómo generas la primera consulta?
Gracias por tan rápida contestación y por el tiempo y conocimientos que pones a mi disposición.
Parto de tablas vinculadas a ficheros .txt luego monto 2 consultas de selección y las de eliminación y consultas de datos anexados para actualizar la tabla final.
Las consultas son las siguientes:
consulta_1
 
select distinct nombre_parametros.nombre, tabla1_datos.aaalbaran, tabla1_datos.nualbaran, tabla1_datos.faltaalbaran, nombre_parametros.cod_param, cint(left([faltaalbaran],4)) as aafaltaalbaran, cint(mid([faltaalbaran],5,2)) as mesfaltaalbaran
from tabla1_datos, nombre_parametros
where (((nombre_parametros.cod_param)="param_01") and ((cint(left([faltaalbaran],4)))>=2000) and ((tabla1_datos.talbaran)=2))
order by cint(left([faltaalbaran],4)), cint(mid([faltaalbaran],5,2));
consulta_2
 
select "albarán por meses del tipo 2" as [param_01], [consulta_1].aafaltaalbaran, count([consulta_1].mesfaltaalbaran) as contador, iif([mesfaltaalbaran]=1,"enero",iif([mesfaltaalbaran]=2,"febrero",iif([mesfaltaalbaran]=3,"marzo",iif([mesfaltaalbaran]=4,"abril",iif([mesfaltaalbaran]=5,"mayo",iif([mesfaltaalbaran]=6,"junio",iif([mesfaltaalbaran]=7,"julio",iif([mesfaltaalbaran]=8,"agosto",iif([mesfaltaalbaran]=9,"septiembre",iif([mesfaltaalbaran]=10,"octubre",iif([mesfaltaalbaran]=11,"noviembre",iif([mesfaltaalbaran]=12,"diciembre")))))))))))) as mes
from [consulta_1]
group by " albarán por meses del tipo 2", [consulta_1].aafaltaalbaran, iif([mesfaltaalbaran]=1,"enero",iif([mesfaltaalbaran]=2,"febrero",iif([mesfaltaalbaran]=3,"marzo",iif([mesfaltaalbaran]=4,"abril",iif([mesfaltaalbaran]=5,"mayo",iif([mesfaltaalbaran]=6,"junio",iif([mesfaltaalbaran]=7,"julio",iif([mesfaltaalbaran]=8,"agosto",iif([mesfaltaalbaran]=9,"septiembre",iif([mesfaltaalbaran]=10,"octubre",iif([mesfaltaalbaran]=11,"noviembre",iif([mesfaltaalbaran]=12,"diciembre")))))))))))), [consulta_1].mesfaltaalbaran
having ((([consulta_1].aafaltaalbaran)>=2000));
consunta_3
insert into parametros ( codigo, descripcion, aafaltaalbaran, sumadecontador, enero, febrero, marzo, abril, mayo, junio, julio, agosto, septiembre, octubre, noviembre, diciembre )
select "param_01" as codigo, [consulta_2)].[param_01], [consulta_2].aafaltaalbaran, sum([consulta_2].contador) as sumadecontador, sum(iif([mes]="enero",[contador],0)) as enero, sum(iif([mes]="febrero",[contador],0)) as febrero, sum(iif([mes]="marzo",[contador],0)) as marzo, sum(iif([mes]="abril",[contador],0)) as abril, sum(iif([mes]="mayo",[contador],0)) as mayo, sum(iif([mes]="junio",[contador],0)) as junio, sum(iif([mes]="julio",[contador],0)) as julio, sum(iif([mes]="agosto",[contador],0)) as agosto, sum(iif([mes]="septiembre",[contador],0)) as septiembre, sum(iif([mes]="octubre",[contador],0)) as octubre, sum(iif([mes]="noviembre",[contador],0)) as noviembre, sum(iif([mes]="diciembre",[contador],0)) as diciembre
from [consulta2]
group by "param_01", [consulta_2].[param_01], [consulta_2].aafaltaalbaran;
El resultado final funciona correctamente asignando a cada mes el total, pero si el año no dispone de ningún registro, como es lógino no se genera y necesitaba que se insertara ese año con todos sus meses a 0.
Gracias de nuevo, aunque resulta fácil dar las gracias como contrapartida de un servicio de tan gran valor como este.
Bien, el problema de que no se genere año es porque no hay nada en ese año, por lo que habría que forzar la creación de todos los años.
Puedes hacerlo o bien por un código VB que te revise todos los años si son correlativos o tu mismo creando registros vacíos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas