Sql 查找与另一列中特定行值相关的列中的相同行数

Sql 查找与另一列中特定行值相关的列中的相同行数,sql,database,select,sql-server-2008-r2,Sql,Database,Select,Sql Server 2008 R2,我正在尝试进行查询,以了解有多少人的活动处于状态3。我想我需要一个计数或求和,但我已经很久没有这样做了,我已经尝试了很多次搜索,但仍然感到困惑。假设我有以下几点 活动表: activity_id status 1 3 2 3 3 1 person_id activity_id 1 1 1 2 2 2 2 3 3

我正在尝试进行查询,以了解有多少人的活动处于状态3。我想我需要一个计数或求和,但我已经很久没有这样做了,我已经尝试了很多次搜索,但仍然感到困惑。假设我有以下几点

活动表:

activity_id  status
1             3
2             3
3             1
person_id  activity_id
1            1
1            2
2            2
2            3 
3            3
人员活动表:

activity_id  status
1             3
2             3
3             1
person_id  activity_id
1            1
1            2
2            2
2            3 
3            3
我希望查询输出:

person_id   no_of_status_3
1             2
2             1
3             0
如有任何建议,将不胜感激。提前感谢。

这应该可以:

SELECT pa.person_id, count(a.activity_id)
FROM person_activity pa
LEFT JOIN activity a ON (pa.activity_id = a.activity_id AND a.status = 3)
GROUP BY pa.person_id
SELECT  PA.person_id,
        COUNT(A.activity_id) no_of_status_3
FROM Person_activity PA
LEFT JOIN ( SELECT *
            FROM Activity
            WHERE status = 3) A
    ON PA.activity_id = A.activity_id
GROUP BY PA.person_id
有一个演示。结果是:

╔═══════════╦════════════════╗
║ PERSON_ID ║ NO_OF_STATUS_3 ║
╠═══════════╬════════════════╣
║         1 ║              2 ║
║         2 ║              1 ║
║         3 ║              0 ║
╚═══════════╩════════════════╝

仅从标题-
JOIN
groupby
意外命中mysql标记,这是sql server 2008,它将返回
person\u id=3
的值
1
是的,应该计算活动id,而不是“*”-我没有检查我的错误