2017-08-28 18 views
2

2つの異なるテーブルから2つのクエリがあります。 1つはSUM関数を使用して作成され、もう1つはCOUNT機能を使用して作成されました。私が必要とするのは、その結果を合計して、合計レコード(テーブル "C"など)で1つのテーブルを得ることです。2つの異なるクエリ(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 
0

これは

select origin, 
     sum(count) 
from (
     select * from rec 
     union all 
     select * from sent) 
group by 
origin 
仕事をする必要があります

ここにリンク http://www.sqlfiddle.com/#!4/0a8fc/1

関連する問題