Where clause that returns values that have meet at least two of three criteria
sql, sql-server-2008, where-clause
Solution
You might add matches in a series of case ... then 1 else 0 end statements and compare final result to number of required matches:
SELECT *
FROM Personal
WHERE
case when [State] = 'Tx' then 1 else 0 end
+ case when [City] = 'Austin' then 1 else 0 end
+ case when [Gender] = 'Male' then 1 else 0 end
>= 2
Alternatively, you might break it into a list of union all:
SELECT *
FROM personal
INNER JOIN (SELECT id
FROM (SELECT id
FROM personal
WHERE state = 'Tx'
UNION ALL
SELECT id
FROM personal
WHERE city = 'Austin'
UNION ALL
SELECT id
FROM personal
WHERE gender = 'Male') a
GROUP BY id
HAVING COUNT (*) >= 2) a
ON personal.id = a.id
Problem
I am trying to write a where clause that will find people who have meet at least two of three criteria. This is an example ``` SELECT * FROM Personal WHERE [State] = 'Tx' or [City] = 'Austin' or [Gender] = 'Male' ``` So It should return anyone who Lives in Texas and Austin or Lives in Texas and is Male and so on, but not someone who just lives in Texas, they have to meet at least two of the criteria My real query can have more criteria and also include a greater than two or exactly two and so on. Thanks in advance