Sql server 搜索计数(*)

Sql server 搜索计数(*),sql-server,Sql Server,我正试图通过每个人的技能数量获得所有人的名字!所以一切都很好,但问题是如何寻找一个拥有“2”技能的人 SELECT FULLNAME, TeamNAME, COUNT(*) AS NoSkills FROM [Skills Matrix].[dbo].[PeopleSkills] AS PS, [Skills Matrix].[dbo].[People] AS P, [Skills Matrix].[dbo].[Teams] AS T WHERE PS.FK_People = P.ID AND

我正试图通过每个人的技能数量获得所有人的名字!所以一切都很好,但问题是如何寻找一个拥有“2”技能的人

SELECT FULLNAME, TeamNAME, COUNT(*) AS NoSkills 
FROM [Skills Matrix].[dbo].[PeopleSkills] AS PS, [Skills Matrix].[dbo].[People] AS P, [Skills Matrix].[dbo].[Teams] AS T
WHERE PS.FK_People = P.ID AND P.FK_TEAM = T.ID AND NoSkills LIKE '2'
GROUP BY FULLNAME, TeamNAME, NoSkills
我得到的这个输出:


你能帮帮我吗

您不应按在选择列表中创建的别名分组。将
NoSkills
groupby
中删除。此外,如果要过滤聚合函数的值(例如,
COUNT
),则应使用
HAVING
子句(而不是
WHERE

GROUP BY FULLNAME, TeamNAME
HAVING COUNT(*) = 2

您不应按在“选择”列表中创建的别名分组。将
NoSkills
groupby
中删除。此外,如果要过滤聚合函数的值(例如,
COUNT
),则应使用
HAVING
子句(而不是
WHERE


从group by子句中删除NOSKILS

从group by子句中删除NOSKILS

NOSKILS不是我们表中的一列。请发布您的表结构我认为您需要
COUNT(*)=2
,因为MSSQL不允许引用
WHERE
子句中的别名列。NoSkills不是我们表中的列。请发布您的表结构我认为您需要
COUNT(*)=2
,因为MSSQL不允许引用
WHERE
子句中的别名列。
SELECT FULLNAME, TeamNAME, COUNT(*) AS NoSkills 
FROM [Skills Matrix].[dbo].[PeopleSkills] AS PS, [Skills Matrix].[dbo].[People] AS P, [Skills Matrix].[dbo].[Teams] AS T
WHERE PS.FK_People = P.ID AND P.FK_TEAM = T.ID
GROUP BY FULLNAME, TeamNAME
HAVING COUNT(*) = 2