SQL Server 2008 R2中的聚合函数错误

时间:2015-08-17 09:05:25

标签: sql sql-server sql-server-2008-r2

我想检索属于多个城市的empId。所以我使用这个查询:

select empId 
from phone 
group by city 
having  count(city) > 1

但是我收到了错误:

  

Msg 8120,Level 16,State 1,Line 1
  专栏' phone.empId'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。

3 个答案:

答案 0 :(得分:5)

使用GROUP BYHAVING计算不同的城市来查找超过1个城市的empId:

SELECT empId
FROM phone
GROUP BY empId
HAVING COUNT(DISTINCT city) > 1

答案 1 :(得分:0)

这个错误说的是,如果你要使用GROUP BY子句,那么在你的SELECT语句中你只能选择"您要分组的列并在该列上使用聚合函数,因为其他列不会出现在结果表中。

答案 2 :(得分:0)

您也可以使用ROW_NUMBER()来处理它:
以下代码应该有效:

select empId from 
(
select distinct empId,city,ROW_NUMBER() over(partition by empId order by city) rn
 from phone 
 ) a
 where rn>1