2017-08-28 70 views
2

我有來自兩個不同表的兩個查詢。一個是使用SUM函數製作的,另一個是使用COUNT函數製作的。我需要的是對他們的結果進行總結,以便我可以得到一個包含總記錄的表(如表「C」)。來自兩個不同查詢的總結果(SQL)

到目前爲止,我已經試過這加入,但它不工作:

select a.origin, count(*) as received, sum(b.contacts) as sent 
from bd.received a 
left join db.sent b 
on a.origin=b.origin 
group by b.origin 

表A(收稿聯繫人)

select count(*), origin from db.received group by origin 

    Origin Count(*) 
    Email 500 
    Phone 200 
    Social 100 

表B(發送聯繫人)

select sum(contacts), origin from db.sent group by origin 

    Origin Sum(*) 
    Email 20 
    Phone 100 

表C(總聯繫人)

Origin Total 
    Email 520 
    Phone 300 
    Social 100 
+0

'UNION ALL'查詢,然後是'GROUP BY Origin'和'SUM(Total)'這些查詢。 –

回答

4

你可以union all像這樣在派生表/子查詢每個計數查詢:

select 
    origin 
    , Received = sum(ReceivedCount) 
    , Sent  = sum(SentCount) 
    , Total = sum(ReceivedCount)+sum(SentCount) 
from (
    select origin, ReceivedCount = count(*), SentCount=0 
    from bd.received 
    group by origin 
    union all 
    select origin, ReceivedCount = 0, SentCount=count(*) 
    from db.sent 
    group by origin 
) s 
group by origin 
+0

謝謝SOOOO多!!!!它工作完美! –

+0

@PaulaC樂意幫忙! – SqlZim

0

您可以使用下面的查詢 -

select t1.origin , sum(received) from 
(
select a.origin, count(*) received 
from db.received a 
group by a.origin 
union all 
select b.origin, count(*) sent 
from db.sent b 
group by b.origin 
) as t1 
group by t1.origin