Site Owner | Site URL | Delete Site
User #1 | google.com | Yes
User #2 | google.com | Yes
User #3 | yahoo.com | No
User #4 | yahoo.com | Yes
User #5 | hotmail.com | No
User #6 | hotmail.com | NULL
我需要选择所有网站所有者都回答是的所有网站网址。如果同一站点URL中的一个用户回答“是”而另一个用户回答“否”,则表示我不需要。例如,我在上面的示例中需要获取google.com,因此两个用户都回答“是”。
答案 0 :(得分:1)
您可以使用group by
和having
:
select site_url
from t
group by site_url
having min(delete_site) = 'yes' and max(delete_site) = 'yes' and
count(*) = count(delete_site); -- no NULL values;
您实际上可以将having
子句简化为:
having count(*) = sum(case when delete_site = 'yes' then 1 else 0 end)
答案 1 :(得分:1)
这是另一个版本。 对于空值,我更喜欢使用ISNULL替换器,而IIF用于解码是否为可数数字
SELECT
[Site Url]
FROM
Table1
GROUP BY
[Site Url]
HAVING
SUM( IIF(ISNULL([Delete Site], '')='Yes', 0, 1)) = 0
答案 2 :(得分:0)
以同样的方式,你也可以使用not exists
select *
from table t
where not exists (
select 1 from table
where [Site URL] = t.[Site URL] and [Delete Site] <> 'Yes'
)