2009-03-03 6 views
16

Kayıtlı bir yordamda tüm sorgunun birleşim var.TSQL - Birleşim sorgusunu toplam

Ne yapmak istiyorum toplamı bir sütundur ve müşteri bunu yapacağını nasıl

bu sorguyu dönmek?

Malcolm

+0

ben size TSQL kodu –

cevap

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

** Herhangi bir ** durumunda daha iyidir, diğer alt satırda "othercol1, othercol2, SUM (bar)" yerine "elsecol1, othercol2; Satırlar çok fazla mı, yani binlerce mi yoksa milyonlar mı? Veya iç sorgudaki SUM() hiç bir durumda ASLA daha iyi olamaz mı? – Medorator

+0

@buffer: İç tablada bir tane agrega yerine 2 tane agrega harekatı olacaktır. Daha iyi olabilir. – gbn

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

sonrası önermek UNION kullanırken kendisi tarafından kullanıldığında yanlış sonuç ("birlik" riskiyle filtreleyen çoğaltılamaz "sendikayı ayrı" = satırlar), eğer tüm satırlara ihtiyaç duyduğunuz çok daha olasıysa, yani UNION ALL –

+0

@Used_By_Already - haklıysanız, UNION TÜM elbette olmalıdır. Düzeltildi. – Joe