2009-03-03 15 views
16

Ho una query di unione in una stored procedure.TSQL: somma una query di unione

Quello che vorrei fare è sommare una colonna e tornare quella query al cliente

Come faccio a fare questo?

Malcolm

+0

ti suggerisco di postare il tuo codice TSQL –

risposta

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

È meglio in ** qualsiasi ** caso selezionare 'othercol1, othercol2, SUM (bar) 'piuttosto che' othercol1, othercol2, bar' dalla sub-query interna e SUM di nuovo nella query esterna, ad es. se le righe restituite sono troppe, cioè migliaia o milioni? O SUM() nella query interna non sarà MAI meglio in ogni caso? – Medorator

+0

@buffer: avrebbe 2 operazioni di aggregazione nella tabella interna, invece di un aggregato esterno. Potrebbe essere meglio. – gbn

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

Quando si utilizza UNION si corre il rischio di un risultato errato ("unione", quando usato da solo = "unione distinta", che filtra il duplicato righe), se sommando è molto più probabile che siano necessarie tutte le righe, ovvero UNION ALL –

+0

@Used_By_Already - hai ragione, dovrebbe essere UNION ALL ovviamente. Corretto. – Joe