2017-02-16 4 views
0

次のスクリプトを使用して2つのビューを結合し、view2からview1への行イベントの数をカウントできるようにします。しかし、view1の行イベントの中にview2行のイベントがないことも確認したいと思います。SQL Server Management Studio:View1の行をView2に結合しないで返します

スクリプト:

Select vp.id, vp.EventName, vp.Unit, vp.Product, vp.StartTime, vp.EndTime, vp.Production, vp.BDP, count(distinct vl.Name) as NumLCs 
from [V_ProductionEvents] vp 
join [V_LossEvents] vl on vl.Unit = vp.Unit and vl.StartTime >= vp.StartTime and vl.EndTime <= vp.EndTime 
where vp.StartTime > '2/01/2017' 
group by vp.id, vp.Unit, vp.StartTime, vp.EndTime, vp.EventName, vp.Product, vp.bdp, vp.Production 
order by vp.StartTime desc 

/終了時間を開始し、私は0「NumLCsを持っているより多くの生産イベントを表示することができますどのように誰NumLC + = 1 ...を知っています制作、イベント内にあるすべての損失事象のために"?

+0

@a_horse_with_no_name SSMS – Dplusa25

+0

使用右側がnullの場合、例えば'select * from table1 t1 left join table2 t2 on t1.id = t2.fk_id where t2.fk_id is null' – AndrewP

答えて

0

使用left join:左ではなく、内側の参加参加、及びチェック

select 
    vp.id 
    , vp.EventName 
    , vp.Unit 
    , vp.Product 
    , vp.StartTime 
    , vp.EndTime 
    , vp.Production 
    , vp.BDP 
    , NumLCs = count(distinct vl.Name) 
from [V_ProductionEvents] vp 
    left join [V_LossEvents] vl 
    on vl.Unit = vp.Unit 
    and vl.StartTime >= vp.StartTime 
    and vl.EndTime <= vp.EndTime 
where vp.StartTime > '2/01/2017' 
group by 
    vp.id 
    , vp.Unit 
    , vp.StartTime 
    , vp.EndTime 
    , vp.EventName 
    , vp.Product 
    , vp.bdp 
    , vp.Production 
order by vp.StartTime desc 
関連する問題