我正在寻找一种只有当 NO 行保持特定值时才能返回 ID 的方法
例如:
*ID* | *Date*
1 | 01/01/2001
1 | 02/02/2002
1 | 03/03/2003
如果我希望SQL仅在没有日期等于02/02/2002的情况下返回 ID ,我该如何编写脚本?我尝试过以下的尝试并失败了:
select *ID*
from (example)
where date != 02/02/2002
问题是这仍然会返回 ID - 1,因为第一行和最后一行不等于02/02/2002。我的目标是没有返回结果,因为至少有一行保持匹配日期。
当任何行中有匹配的日期时,我需要脚本完全跳过 ID 。
为清楚起见,当使用相同的'选择'时,下面应该返回 ID 。如上所述,因为没有日期匹配:
*ID* | *Date*
2 | 03/03/2003
2 | 04/04/2004
2 | 05/05/2005
答案 0 :(得分:3)
您需要Group By
和Having
子句
select ID
From yourtable
group by ID
Having count (case when date != '02/02/2002' then 1 end) = count(*)
正如mathguy所说,这也有效
select ID
From yourtable
group by ID
Having count(case when date = '02/02/2002' then 1 end) = 0