2016-08-13 21 views
1

次のように私はテーブルを持って中に存在していない行の数:SQL「総数」と別のテーブルGROUPBY

create table rrr_br(br_id nvarchar(10), location nvarchar(10)) 
create table rrr_profile(profileid nvarchar(10), br_id nvarchar(10)) 
insert into rrr_br values('AAA', 'CHN') 
insert into rrr_br values('BBB', 'CHN') 
insert into rrr_br values('CCC', 'CHN') 
insert into rrr_br values('DDD', 'MDR') 
insert into rrr_br values('EEE', 'MDR') 
insert into rrr_br values('FFF', 'MDR') 
insert into rrr_profile values('111', 'AAA') 
insert into rrr_profile values('222', 'BBB') 
insert into rrr_profile values('222', 'FFF') 

は、今私は「rrr_br」テーブルからフェッチする必要があります...「場所」ワイズ総数br_idと 'rrr_profile'テーブルにないbr_idsの数

Select location 'LOCATION', 
    cnt 'Total Vehicles', 
    cnt 'Vehicles Not Processed' 
from (select location,Count(*) cnt 
from rrr_br vh(nolock)  
group by location) B 

ありがとうございました。

次のように予想される結果は次のとおり

Location| Total Vehicles| Vehicles Not Processed| 
    ------------------------------------------------- 
CHN | 3 | 1  | 
MDR | 3 | 2  | 
+0

期待どおりの結果を追加できますか? –

+0

:ロケーション|総車両数|処理されていない車両| ------------------------------------------------- ----------------- CHN \t | | \t | MDR | | \t | – user1587872

答えて

1

使用LEFT JOIN車両が処理かどうかを決定するために、COUNT(*)ヌル値を除外するために、すべての行とCOUNT(col)を含むこと。

SELECT rrr_br.location, 
    COUNT(*) AS Total, 
    COUNT(*) - COUNT(rrr_profile.profileid) AS NotProcessed 
FROM rrr_br 
LEFT JOIN rrr_profile ON rrr_br.br_id = rrr_profile.br_id 
GROUP BY rrr_br.location 
関連する問題