I'm looking to filter out rows in the database (PostgreSQL) if one of the values in the status
column occurs. The idea is to sum the amount
column if the unique reference
only has a status
equals to 1
. The query should not SELECT
the reference
at all if it has also a status of 2
or any other status
for that matter. status
refers to the state of the transaction.
Current data table:
reference | amount | status
1 100 1
2 120 1
2 -120 2
3 200 1
3 -200 2
4 450 1
Result:
amount | status
550 1
I've simplified the data example but I think it gives a good idea of what I'm looking for.
I'm unsuccessful in selecting only references
that only have status 1
.
I've tried sub-queries, using the HAVING
clause and other methods without success.
Thanks
Here's a way using
not exists
to sum all rows where the status is 1 and other rows with the same reference and a non 1 status do not exist.