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:
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?
Dies hat den Trick. Ich bin verrückt geworden. Vielen Dank. – BIReportGuy