Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Como obtener el sum de tres tablas en sql server

Estas en el tema de Como obtener el sum de tres tablas en sql server en el foro de SQL Server en Foros del Web. tengo defino una tabla DiasMes con un solo campo mesdia char(4) en donde los registros tiene el mes + el dia 0801 0802 0803 0804 ...
  #1 (permalink)  
Antiguo 16/08/2007, 13:22
 
Fecha de Ingreso: abril-2007
Mensajes: 48
Antigüedad: 17 años
Puntos: 0
Como obtener el sum de tres tablas en sql server

tengo defino una tabla DiasMes con un solo campo mesdia char(4) en donde los registros tiene el mes + el dia
0801
0802
0803
0804
0805 ....etc asi de todo el año, y dos tablas Entradas y salidas en donde ambas tablas
tienen entre otros campos 3 muy importantes (codigo, fecha, cantidad), lo cual hice una consulta para entradas de
este tipo

Código PHP:
SELECT     SUM(E.Cantidad) AS SumaE.CodigoE.Fecha
FROM         Entradas E INNER JOIN
                      DiasMes d ON d
.mesdia CONVERT(CHAR(4), E.Fecha12)
WHERE     (E.Fecha BETWEEN '08/08/2007' AND '16/08/2007')
GROUP BY E.CodigoE.Fecha

Y tambien se pordria hacer para salidas

realice esta consulta donde en entradas tengo registros del 08-08-2007 al 14-08-2007 y en salidas solo tengo
un registro del 16-08-2007 del mismo codigo, el resultado es el siguiente del codigo sql:

Código PHP:
SELECT     SUM(E.Cantidad) AS SumaEntE.CodigoE.FechaSUM(S.Cantidad) AS SumaSalida
FROM         DiasMes RIGHT OUTER JOIN
                      SalidasProd S ON DiasMes
.mesdia CONVERT(CHAR(4), S.Fecha12RIGHT OUTER JOIN
                      EntradasProd E ON S
.Codigo E.Codigo AND DiasMes.mesdia CONVERT(CHAR(4), E.Fecha12)
WHERE     (E.Fecha BETWEEN CONVERT(DATETIME'2007-07-08 00:00:00'102) AND CONVERT(DATETIME'2007-08-15 00:00:00'102)) AND 
                      (
E.Codigo '05010151-3X')
GROUP BY E.CodigoE.FechaS.Fecha
ORDER BY E
.Fecha

    
--------------------------------------------
    
900    05010151-3X     08/08/2007    50
    5000    05010151
-3X     09/08/2007    50
    840    05010151
-3X     10/08/2007    100
    300    05010151
-3X     14/08/2007    50


el resultado que espero es como este
que me hace falta:

    
SumaEnt Codigo         Fecha         SumaSalida
    
--------------------------------------------
    
900    05010151-3X     08/08/2007    null
    5000    05010151
-3X     09/08/2007    null
    840    05010151
-3X     10/08/2007    null
    300    05010151
-3X     14/08/2007    null
    0    05010151
-3X    16/08/2007    50 
como puedo hacer esta consulta para ambas tablas, entradas y salidas con respecto a la otra tabla diasmes,

Les agradesco
Gracias
  #2 (permalink)  
Antiguo 17/08/2007, 09:32
 
Fecha de Ingreso: junio-2007
Ubicación: El Salvador
Mensajes: 21
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: Como obtener el sum de tres tablas en sql server

Esta podria ser una opción, espero te sirva:

Código:
select fecha,codigo,sum(case when a.tipo='E' then cantidad else 0 end) as SumEntr,sum(case when a.tipo='S' then cantidad else 0 end) as SumSal from (
select codigo,fecha,cantidad,'E' as tipo from entradas UNION select codigo,fecha,cantidad,'S' as tipo from salidas) as a where a.fecha>CONVERT(DATETIME, '2007-07-08 00:00:00', 102) group by a.fecha,a.codigo order by a.fecha
Estos son los datos y la salida usados:
Entradas:
codigo fecha cantidad
----------- ------------------------------------------------------
1 2007-08-08 00:00:00.000 1.0
1 2007-08-08 00:00:00.000 5.0
2 2007-08-08 00:00:00.000 1.0
1 2007-08-09 00:00:00.000 5.0



Salidas:
codigo fecha cantidad
----------- ------------------------------------------------------
1 2007-08-08 00:00:00.000 2.0


RESULTADO DE LA CONSULTA:

fecha codigo SumEntr SumSal
------------------------------------------------------ -----------
2007-08-08 00:00:00.000 1 6.0 2.0
2007-08-08 00:00:00.000 2 1.0 0.0
2007-08-09 00:00:00.000 1 5.0 0.0

(3 filas afectadas)


Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:32.