So I have a SQL statement of the following form with multiple WHERE clauses:
SELECT cols FROM table
WHERE
CONDITION1 OR
CONDITION2 OR
...
CONDITIONN
I know that if I run this, then I will get all rows that satisfy at least one of the above n conditions.
But now, I want to return the rows such that at least k of the WHERE conditions are satisfied. Is there a way to do this in SQL without writing out all n Choose k subsets of the set of WHERE clauses?
This is a rather tedious way, but it should work:
SELECT cols
FROM table
WHERE
CASE WHEN CONDITION1 THEN 1 ELSE 0 END +
CASE WHEN CONDITION2 THEN 1 ELSE 0 END +
CASE WHEN CONDITION3 THEN 1 ELSE 0 END +
...
>= N
;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With