以下の表の例では、2 つの状況でマークを超える金額を合計する方法を見つけようとしています。 id 内に存在します (id 1 または 2 を参照)。最初の状況では、その ID 内のマーク「A」に対する金額を除外したいと考えています (以下の変換テーブルの ID 3 を参照)。2 番目の状況では、除外を実行せず、マークに対する金額の単純な合計を取得します。
つまり、マーク「A」と「C」の両方を含むidの場合、「A」に対する金額をゼロにしたいのです。マーク「C」を含まないがマーク「A」を含む ID については、マーク「A」に対して元の金額を維持します。
私の望む出力は一番下にあります。ID でパーティション分割するか、EXISTS コマンドを使用することを検討しましたが、解決策を概念化するのに苦労しています。あなたの誰かが見て、私を正しい方向に向けることができれば、それは大歓迎です:)
例のテーブル:
id mark amount
------------------
1 A 1
2 A 3
2 B 2
3 A 1
3 C 3
希望の変換:
id mark amount
------------------
1 A 1
2 A 3
2 B 2
3 A 0
3 C 3
望ましい出力:
mark sum(amount)
--------------------
A 4
B 2
C 3