Oracle
 sql >> Database >  >> RDS >> Oracle

Escludere il valore di un record in un gruppo se ne è presente un altro v2

Potresti modificare leggermente la mia risposta precedente e finisci con questo:

SELECT
  mark,
  sum(amount) AS sum_amount
FROM atable t
WHERE mark <> 'A'
  OR NOT EXISTS (
    SELECT *
    FROM atable
    WHERE id = t.id
      AND mark = 'C'
  )
GROUP BY
  mark
;

C'è una demo dal vivo su SQL Fiddle .