SQL Query para sumar campos de distintas tablas

publicado por: Anonymous

Alguien que me pueda ayudar con esta query. Tengo tres tablas con diferentes nombres.

Tabla Ejemplo1
fecha         campo1
2017-01-01    0.00
2017-01-01    7.00
2017-01-01    0.00
2017-01-01    1.00
2017-01-01    0.00
2017-01-02    1.00
2017-01-02    43.00
2017-01-02    1.00
2017-01-02    0.00
2017-01-02    0.00

Tabla Ejemplo2
fecha         campo2
2017-01-01    0.00
2017-01-01    5.00
2017-01-01    1.00
2017-01-01    3.00
2017-01-01    0.00
2017-01-02    1.00
2017-01-02    3.00
2017-01-02    2.00
2017-01-02    2.00
2017-01-02    0.00

Tabla Ejemplo3
fecha         campo3
2017-01-01    0.00
2017-01-01    5.00
2017-01-01    1.00
2017-01-01    3.00
2017-01-01    0.00
2017-01-02    1.00
2017-01-02    1.00
2017-01-02    0.00
2017-01-02    0.00
2017-01-02    0.00

Quiero sumar todos los campos con sus respectivos valores y luego unir las fechas en un bloque de fecha. Tal que así…

Tabla Final
fecha         campoTotal
2017-01-01    26.00
2017-01-02    55.00

He probado dos formas de hacerlo con consultas anidadas y con subquerys. Y de ninguna forma, he llegado a hacerlo. Alguien me puede echar un cable?

Consultas

SELECT [fecha],
       sum([campo1]) AS "campo1"
FROM Ejemplo1
WHERE fecha = '2017-01-01'
GROUP BY fecha

SELECT [fecha],
       sum([campo2]) AS "campo2"
FROM Ejemplo2
WHERE fecha = '2017-01-01'
GROUP BY fecha

SELECT [fecha],
       sum([campo3]) AS "campo3"
FROM Ejemplo3
WHERE fecha = '2017-01-01'
GROUP BY fecha

Subquerys

select fecha,sum(campo1) total
from
(
    select fecha,campo1
    from ejemplo1
    union all
    select fecha,campo2
    from ejemplo2
    union all
    select fecha,campo3
    from ejemplo3
) t
group by fecha

solución

Lo he resuelto como bien deciais usando un INNER JOIN de las tablas.

SELECT conversions_1.fecha,
       ([columna 1] + [columna 2] + [columna 3] as conversiones_totales
       FROM
(SELECT [fecha],
       sum([campo1]) AS "columna 1"
FROM [dbo].[Ejemplo1]
GROUP BY fecha) as conversions_1

inner join

(SELECT [fecha],
       sum([campo2]) AS "columna 2"
FROM [dbo].[Ejemplo2]
GROUP BY fecha) as conversions_2

on conversions_1.fecha = conversions_2.fecha

inner join

(SELECT [fecha],
       sum([campo3]) AS "columna 3"
FROM [dbo].[Ejemplo3]
GROUP BY fecha) as conversions_3

on conversions_1.fecha = conversions_3.fecha

ORDER BY conversions_1.fecha
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *