Возможный дубликат:
Путаница GROUP BY/агрегатная функция в SQL
У меня есть ошибка - Столбец "Employee.EmpID" недопустим в списке выбора, потому что он не содержится ни в агрегатной функции, ни в предложении GROUP BY.
select loc.LocationID, emp.EmpID
from Employee as emp full join Location as loc
on emp.LocationID = loc.LocationID
group by loc.LocationID
Эта ситуация вписывается в ответ, данный Биллом Карвином.
коррекция выше, вписывается в ответ ExactaBox -
select loc.LocationID, count(emp.EmpID) -- not count(*), don't want to count nulls
from Employee as emp full join Location as loc
on emp.LocationID = loc.LocationID
group by loc.LocationID
ОРИГИНАЛЬНЫЙ ВОПРОС -
Для SQL-запроса -
select *
from Employee as emp full join Location as loc
on emp.LocationID = loc.LocationID
group by (loc.LocationID)
Я не понимаю, почему я получаю эту ошибку. Все, что я хочу сделать, это присоединиться к таблицам, а затем объединить всех сотрудников в определенном месте.
Я думаю, что у меня есть частичное объяснение для моего собственного вопроса. Скажите мне, нормально ли это -
Чтобы сгруппировать всех сотрудников, работающих в одном месте, мы должны сначала упомянуть LocationID.
Тогда мы не можем/не указывать каждый идентификатор сотрудника рядом с ним. Скорее, мы упомянем общее количество сотрудников в этом месте, то есть мы должны SUM() сотрудников, работающих в этом месте. Почему мы делаем это последним способом, я не уверен. Таким образом, это объясняет часть ошибки "не содержится в агрегатной функции".
Каково объяснение части "GROUP BY" части ошибки?