Sql server 搜索计数(*)
我正试图通过每个人的技能数量获得所有人的名字!所以一切都很好,但问题是如何寻找一个拥有“2”技能的人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
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