2016-03-25 6 views
0

Wie summiere ich den Betrag aus zwei Abfragen mit union alle in eine Spalte und eine Zeile? Im Moment ist es in zwei Zeilen aufgeteilt, aber ich möchte nur, dass der Unterschied in der TotalQty-Spalte in einer einzigen Zeile liegt.SQL Summe aus zwei Vereinigungen in einer Zeile

select sum(begsdquantity)as 'TotalQty', CUSIPNumber, ForeignCountry 
from 
    (
     select sum (abs(b.begsdquantity)) begsdquantity, B.CUSIPNumber, C.FOREIGNCOUNTRY 
     from USBI.vw_NameAddressBase a 
     inner join USBI.vw_StockRecord b on a.FirmAccountId = b.FirmAccountId 
     inner join USBI.vw_SecurityBase c on b.FirmCUSIPId = c.FirmCUSIPId 
     WHERE '20160229' between a.EffectiveDate and a.ExpirationDate 
     AND '20160229' between b.EffectiveDate and b.ExpirationDate 
     and '20160229' between c.EffectiveDate and c.ExpirationDate 
     AND c.ForeignCountry NOT IN ('US', 'VA', 'RQ', 'VQ') 
     and b.CUSIPNumber = '654902204' 
     and b.AcctType in ('0') 
     and b.LocMemo = 's' 
     GROUP BY B.CUSIPNumber, C.ForeignCountry   

     union ALL 

     select sum(-b.begsdquantity) begsdquantity, B.CUSIPNumber, C.ForeignCountry 
     from USBI.vw_NameAddressBase a 
     INNER join USBI.vw_StockRecord b on a.FirmAccountId = b.FirmAccountId 
     inner join USBI.vw_SecurityBase c on b.FirmCUSIPId = c.FirmCUSIPId 
     where a.RestrDate in ('99999999') 
     AND a.CloseRestrictInd in ('C') 
     AND c.ForeignCountry NOT IN ('US', 'VA', 'RQ', 'VQ') 
     and '20160229' between a.EffectiveDate and a.ExpirationDate 
     and '20160229' between b.EffectiveDate and b.ExpirationDate 
     and '20160229' between c.EffectiveDate and c.ExpirationDate 
     and b.CUSIPNumber = '654902204' 
     GROUP BY B.CUSIPNumber, C.ForeignCountry 

    ) t 

group by begsdquantity, CUSIPNumber, ForeignCountry 

ORDER BY CUSIPNumber 

Meine Ergebnisse:

enter image description here

Ich suche nach der Differenz der TotalQty Spalte von 96061 in einer Spalte und einer Zeile. Ist das möglich oder was mache ich falsch?

Antwort

3

Sprechen Sie die letzte Zeile ...

group by CUSIPNumber, ForeignCountry 

heißt die begsdquantity in der Gruppe herausnehmen von

+0

Dies hat den Trick. Ich bin verrückt geworden. Vielen Dank. – BIReportGuy