1
私は3つのテーブルを持っています。彼らは1対多数の関係を持っていますSQL条件付き計算
table1 - mainID, Select00(bit), Select01(bit)
table2 - secID, mainID
table3 - secID, Num00, Num01
SELECT table1.mainID , SUM(table3.Num00) as S00, SUM(table3.Num01) as S01
FROM table1 INNER JOIN
table2 ON table1.mainID = table2.mainID INNER JOIN
table3 ON table2.secID = table3.secID
GROUP BY table1.mainID HAVING table1.mainID =11
次のクエリは機能しますが、私にはすべての合計が与えられます。
条件に基づいてSUMを取得するにはどうすればよいですか?すなわち
S00 = SUM(table3.Num00) if table1.Select00 = 1 (true)
S01 = SUM(table3.Num01) if table1.Select01 = 1 (true)
WHEREとHAVINGを使用することにはどんな利点がありますか? – user450143
ちょうど習慣。 HAVINGは通常集約をフィルタリングするために使用されます(論理的にGROUP BYの後ろにある理由です)。例えば、HAVING SUM(...)> 10.グループ化の前にフィルタリングする場所 - それはどちらかというと効率的ですHAVINGを使用するのと同じくらい効果的です(しかし、私の長年の仮定が間違っていることが証明されてうれしいですが)。 –