我想检索属于多个城市的empId
。所以我使用这个查询:
select empId
from phone
group by city
having count(city) > 1
但是我收到了错误:
Msg 8120,Level 16,State 1,Line 1
专栏' phone.empId'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。
答案 0 :(得分:5)
使用GROUP BY
和HAVING
计算不同的城市来查找超过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