如何知道 WHERE 语句中有多少条件符合其标准?

Kha*_*era 1 sql t-sql sql-server sql-server-2012

假设我们有以下 SQL 语句。

SELECT ID
FROM table1
WHERE P1 = P1 AND (P2 = X OR P3 = Y OR P4 = Z)
Run Code Online (Sandbox Code Playgroud)

如果括号中的至少两个条件满足其条件,则此语句应返回结果,但我不知道如何编写给出这种结果的语句。先感谢您。

for*_*pas 5

CASE对返回10添加它们的每个条件使用表达式:

SELECT ID 
FROM table1 
WHERE P1 = P1 
  AND CASE WHEN P2 = X THEN 1 ELSE 0 END +
      CASE WHEN P3 = Y THEN 1 ELSE 0 END +
      CASE WHEN P4 = Z THEN 1 ELSE 0 END >= 2
Run Code Online (Sandbox Code Playgroud)

这对于更多条件是可扩展的。