SQL - Usar Identificador para union

 
Vista:

Usar Identificador para union

Publicado por Damian (26 intervenciones) el 08/10/2008 00:53:53
Tengo una consulta en donde quiero traer los totales del mes, el tema es que los totales los tengo en dos tablas(Pedidos y Facturacion) entonces lo que hago es hacer una union, pero claro me trae meses repetidos de ambos y yo quiero que me pongo los totales de los meses de ambas tablas sin repetir el mes, se entiende, me comentaron de los identificadores pero ni idea como se usa, en mi consulta veran algunos meses, pero en realidad van todos,solo que estoy probando.
Separo en dos select las dos tablas,obviamente que distinct no tiene sentido ponerlo

select case Month(F.FechaHora)
when 7 then 'Julio'
when 8 then 'Agosto'
when 9 then 'Septiembre'
when 10 then 'Octubre'
when 11 then 'Noviembre'
end [Mes],sum(F.TotalFact)[Total Mes]
From Facturacion F where (F.Comprobante='FA' or F.Comprobante='ND')
group by Month(F.FechaHora)
union
select case Month(P.FechaPedido)
when 7 then 'Julio'
when 8 then 'Agosto'
when 9 then 'Septiembre'
when 10 then 'Octubre'
when 11 then 'Noviembre'
end [Mes],sum(P.TotalPed)[Total Mes]
From Pedidos P where P.Facturado='NO'
group by Month(P.FechaPedido)

y me trae de resultado.........

Mes Total Mes
Octubre 216.9
Octubre 806.6
Septiembre 96.3
Septiembre 426.96
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

RE:Usar Identificador para union

Publicado por Isaias (5072 intervenciones) el 08/10/2008 18:17:51
Codigo sin probar, no se que tan eficiente sea y claro, debe haber totales de todos los meses en ambas tablas.

SELECT P.Mes, SUM(F.[Total Mes]+P.[Total Mes]) AS TOTAL
FROM (select case Month(F.FechaHora)
when 7 then 'Julio'
when 8 then 'Agosto'
when 9 then 'Septiembre'
when 10 then 'Octubre'
when 11 then 'Noviembre'
end [Mes],sum(F.TotalFact)AS [Total Mes]
From Facturacion F where (F.Comprobante='FA' or F.Comprobante='ND')
group by Month(F.FechaHora) AS FAC
JOIN
(select case Month(P.FechaPedido)
when 7 then 'Julio'
when 8 then 'Agosto'
when 9 then 'Septiembre'
when 10 then 'Octubre'
when 11 then 'Noviembre'
end [Mes],sum(P.TotalPed)AS [Total Mes]
From Pedidos P where P.Facturado='NO'
group by Month(P.FechaPedido)) AS PED
ON FAC.Month(F.FechaHora) = PED.Month(P.FechaPedido)
GROUP BY P.Mes
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

RE:Usar Identificador para union

Publicado por Damian (26 intervenciones) el 08/10/2008 19:17:56
Gracias por responder, pero la consulta me tira error en el AS FAC y en el AS PED. Le saque ese AS y lo puse entre corchetes [FAC] y [PED] pero me sigue tirando error, creo que falta cerrar un parentesis, ya probe cambiando algunas cosas pero los errores siguen,seguire probando........
Si no lo voy a tener que trabajar desde codigo VB.NET con un for y demas, gracias.
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