Совокупная ошибка функции в SQL Server 2008 R2
Я хочу получить empId
это принадлежит более чем одному городу. Поэтому я использую этот запрос:
select empId
from phone
group by city
having count(city) > 1
но я получаю ошибку:
Msg 8120, уровень 16, состояние 1, строка 1
Столбец phone.empId недопустим в списке выбора, поскольку он не содержится ни в статистической функции, ни в предложении GROUP BY.
3 ответа
Использование GROUP BY
а также HAVING
Посчитайте отдельный город, чтобы найти empId с более чем 1 городом:
SELECT empId
FROM phone
GROUP BY empId
HAVING COUNT(DISTINCT city) > 1
Вы можете использовать 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
Эта ошибка говорит о том, что если вы собираетесь использовать предложение GROUP BY, то в своем операторе SELECT вы можете только "выбрать" столбец, по которому вы группируете, и использовать агрегатные функции для этого столбца, потому что другие столбцы не появятся в итоговой таблице.