2013-12-09 96 views
0

我试图让每个人的技能数量都达到所有人的名字!所以一切都很好,但问题是如何搜索一个有'2'技能的人呢?通过COUNT搜索(*)

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 

此输出我有:

enter image description here

能不能帮我请!

+0

NoSkills不是我们餐桌上的一列。请发布你的表结构 –

+0

我相信你需要'COUNT(*)= 2',因为MSSQL不允许在WHERE子句中引用别名列。 –

回答

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

您不应该按您在选择列表中创建的别名进行分组。从GROUP BY删除NoSkills。另外,如果要过滤聚合函数的值(例如COUNT),则应使用HAVING子句(而不是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