2017-03-22 19 views
1

いくつかの列を集計しようとしていますが、いくつかの条件があります。以下を考慮してください:SQL Server - 条件との和

Encounter 
number enc_id 
1324  01  

Charge 
charge_id enc_id amt1 amt2 amt3 
01   01  0.00 0.00 0.01 
02   01  0.00 0.01 0.02 

SELECT Encounter.number, sum(Charge.amt3) 
    FROM Charge 
    WHERE 
     Charge.enc_id = '01' 
    GROUP BY 
     Encounter.number 
    HAVING 
     sum(Charge.amt1 + Charge.amt2) = 0.00 

データベースルールには、出会いに複数の料金があります。 amt3を合計する必要がありますが、料金のいずれかがamt1> 0.00またはamt2> 0.00の場合、関連する料金の合計は加算されません。

これは私が何を返すべきではありません

Enc_number sum(Charge.amt3) 
1234  0.01 

を返されるものです。

どうすればいいですか?これを実行するとき

答えて

0

私が正しく0の結果を得る:

select 
    enc_id 
    , sum(c.amt3) as sumAmt3 
from Charge c 
where c.enc_id = 1 
group by c.enc_id 
having sum(c.amt1 + c.amt2) = 0.00; 

を別のオプションは、not exists()で集計クエリから不要なenc_idを削除されています

select 
    c.enc_id 
    , sum(c.amt3) as sumAmt3 
from Charge c 
where c.enc_id = '01' 
    and not exists (
    select 1 
    from Charge i 
    where i.enc_id = c.end_id 
     and (i.amt1>0 or i.amt2>0) 
    ) 
group by c.enc_id; 

rextester デモhttp://rextester.com/NFBKA57470