SQL - ayuda porfavor no se como hacerlo

   
Vista:

ayuda porfavor no se como hacerlo

Publicado por triny (12 intervenciones) el 12/06/2015 05:36:07
Saludos a todos
Estoy usando sql server 2012
Tengo 2 tablas
Ingresos y egresos
Presupuesto
La tabla ingresos y egresos contiene los siguientes campos
Código cliente /Proveedor
fecha de documento
Proyecto
total gastado
documento

Código cliente /Proveedor documento fecha de documento Proyecto total

c00001 345 15/05/2012 jardinería 4500 c0002 123 31/9/2015 mantenimiento 1300
c00004 234 1/02/2013 papelería 300
p00034 346 21/05/2015 jardinería 5000
p00035 453 5/05/2012 administración 2000
La tabla de Presupuesto (contiene el presupuestos por mes y año de cada proyecto)
Proyecto
mes
Año
Presupuesto
Proyecto mes año presupuesto
jardinería 01 2012 5000
jardinería 02 2013 4500
jardinería 03 2013 5000
jardinería 05 2012 5000
Papelería 01 2014 300
papelería 02 2015 300
mantenimiento 09 2015 2000

lo que tengo que hacer es obter el presupuesto mensual por ducumento enbase a la fecha y mes
que es esto
select year(b.[fecha contable]) 'año', month(b.[fecha contable]) 'Mes',b.[Nombre de Proyecto] 'Proyecto', b.Documento 'Documento',a.U_Presupuesto 'Presupuesto Mensual' , b.Codigo
'Codigo', b.total 'Total'
from [NvaGalicia].[dbo].[@PRESUPUESTO] as a inner join [NvaGalicia].[dbo].[IngresosEgresosNvaGalicia] as b
on a.U_PrjName=b.[Nombre de Proyecto]
group by year(b.[fecha contable]), month(b.[fecha contable]),b.[Nombre de Proyecto] , b.Documento ,a.U_Presupuesto , b.Codigo, b.total

pero lo que no se hacer es validar es si en mi tabla de ingresos y egresos en algún mes , año y proyecto no existiera ningún documento , hay que mostrarlo
por ejemplo
Año mes Proyecto documento Presupuesto Mensual código total
2013 03 Jardineria xxxxx 5000 xxxxx 0

y el reporte mostraría las coincidencias encontradas en la tabla de ingres y egresos ,mas los registros del presupuesto mensual donde no hubo ningún total
se mostraría asi el reporte
Año mes Proyecto documento Presupuesto Mensual código total
2013 03 Jardineria xxxxx 5000 xxxxx 0
2012 05 Jardineria 345 5000 c0001 4500
2015 09 mantenimiento 123 2000 c0002 13000
...
.....
Muchas gracias por su apoyo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

ayuda porfavor no se como hacerlo

Publicado por Rafael (83 intervenciones) el 12/06/2015 13:22:54
Usa un left JOIN

1
2
3
4
5
6
select year(b.[fecha contable]) 'año', month(b.[fecha contable]) 'Mes',b.[Nombre de Proyecto] 'Proyecto', b.Documento 'Documento',a.U_Presupuesto 'Presupuesto Mensual' , b.Codigo
'Codigo', b.total 'Total'
from [NvaGalicia].[dbo].[@PRESUPUESTO] as a
LEFT join [NvaGalicia].[dbo].[IngresosEgresosNvaGalicia] as b
on a.U_PrjName=b.[Nombre de Proyecto]
group by year(b.[fecha contable]), month(b.[fecha contable]),b.[Nombre de Proyecto] , b.Documento ,a.U_Presupuesto , b.Codigo, b.total
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

ayuda porfavor no se como hacerlo

Publicado por triny (12 intervenciones) el 12/06/2015 19:03:05
Gracias por tu tiempo rafael

Pero yo creo que no me explique correctamente una disculpa. el resultado que quiero obtener es
de la la tabla que

presupuestos (que contiene el presupuesto por mes, el año , el mes y el nombre de proyecto)

realizar una comparativa con la tabla

ingresosegresos (que contiene el detalle de todos y cada uno de los documentos como una factura o nota de crédito ala cual se le aplico su presupuesto mensual)

existen meses donde no hubo ninguna factura o nota de crédito , pero en todos y cada unos de los meses hay
un presupuesto mensual ,

Requiero saber en que proyecto , mes y año no hubo ningún gasto

muchas gracias de ante mano
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

ayuda porfavor no se como hacerlo

Publicado por Rafael (83 intervenciones) el 15/06/2015 09:19:41
Conforme lo planteas ahora es algo asi
1
2
3
4
5
6
7
select a.proyecto, a.año, a.mes, a.presupuesto
from   presupuesto a
       left join ingresosegresos b
               on (b.proyecto = a.proyecto
                  and  year(b.fecha_documento) = a.año
                  and  month(b.fecha_documento) = a.mes)
where  b.fecha_documento is null
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

ayuda porfavor no se como hacerlo

Publicado por triny (12 intervenciones) el 15/06/2015 21:18:32
Excelente respuesta Muchas gracias por tu ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar