sql 基于其他列中的多个值进行计数 - sql 服务器管理工​​作室

sql counting based upon multiple values in other column - sql server management studio

我有一个 table 如下所示。我想在 usr 列中有不同的值计数,其中 pn 是 2 和 3。在下面的情况下,它将是 2,因为 usr =1 和 usr =3 在 pn 列中具有值 2 和 3。我不会考虑 usr=2 因为 id 没有 pn=3。我该怎么做?

usr pn
1   1
1   2
1   3
2   5
2   2
2   8
3   2
3   3
select count(*)
from
(
    select usr
    from table_like_below
    where pn in (2,3)
    group by usr
    having count(distinct pn) = 2   -- this guarantees that usr have at least one 2 and at least one 3 in column pn
) T

这应该可以解决问题。

select count(distinct usr) from (
    select usr from table t1 where pn = 2
    inner join (select usr from table where pn = 3) t2
    on t1.usr = t2.usr
)