2009-03-03 14 views
16

Tengo una consulta de unión en un procedimiento almacenado.TSQL - Suma una consulta de unión

lo que me gustaría hacer es sumar una columna y regresar esa consulta al cliente

¿Cómo voy a hacer esto?

Malcolm

+0

Sugiero que publica su código TSQL –

Respuesta

33
SELECT 
    othercol1, othercol2, 
    SUM(bar) 
FROM 
    (
    SELECT 
     othercol1, othercol2, bar 
    FROM 
     RT 
    UNION ALL 
    SELECT 
     othercol1, othercol2, bar 
    FROM 
     FM 
    ) foo 
GROUP BY 
    othercol1, othercol2 
+1

¿Es mejor en ** cualquier caso ** SELECCIONAR 'othercol1, othercol2, SUM (bar)' en lugar de 'othercol1, othercol2, bar' de la subconsulta interna y SUM nuevamente en la consulta externa, p. si las filas devueltas son demasiadas, es decir, miles o millones? ¿O SUMA() en la consulta interna NUNCA será mejor en cualquier caso? – Medorator

+0

@buffer: tendría 2 operaciones agregadas en la tabla interna, en lugar de un agregado externo. Podría ser mejor. – gbn

4
SELECT SUM(MyCol) FROM 
(
SELECT ... MyCol FROM Table1 
UNION ALL 
SELECT ... MyCol FROM Table2 
)as tbl 
+1

Cuando se utiliza UNION se corre el riesgo de un resultado incorrecto ("unión" cuando se usa solo = "unión distinta", que filtra los duplicados filas), si se suma es mucho más probable que necesite todas las filas, es decir UNION TODO –

+0

@Used_By_Already - tiene razón, debería ser UNION TODO, por supuesto. Corregido – Joe

Cuestiones relacionadas