Przyczyna dla kolumny jest nieprawidłowa na liście wyboru, ponieważ nie jest zawarta ani w funkcji agregującej, ani w klauzuli GROUP BY [duplikat]
Możliwy duplikat:
GRUPOWANIE BY / zagmatwanie funkcji w SQL
Mam błąd -
Kolumna „Employee.EmpID” jest niepoprawna na liście wyboru, ponieważ nie jest zawarta ani w funkcji agregującej, ani w klauzuli 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
Ta sytuacja wpisuje się w odpowiedź Billa Karwina.
poprawka na powyższe, pasuje do odpowiedzi 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
PYTANIA ORYGINALNE -
Dla zapytania SQL -
select *
from Employee as emp full join Location as loc
on emp.LocationID = loc.LocationID
group by (loc.LocationID)
Nie rozumiem, dlaczego dostaję ten błąd. Wszystko, co chcę zrobić, to dołączyć do tabel, a następnie zgrupować wszystkich pracowników w określonej lokalizacji.
Myślę, że mam częściowe wyjaśnienie dla mojego pytania. Powiedz mi, czy to w porządku -
Aby zgrupować wszystkich pracowników, którzy pracują w tej samej lokalizacji, musimy najpierw wspomnieć o identyfikatorze lokalizacji.
Następnie nie możemy / nie wymienimy każdego identyfikatora pracownika obok niego. Mówimy raczej o całkowitej liczbie pracowników w tej lokalizacji, tzn. Powinniśmy SUM () pracowników pracujących w tej lokalizacji. Dlaczego robimy to w ten sposób, nie jestem pewien. Wyjaśnia to, że część błędu nie jest zawarta ani w funkcji agregującej.
Jakie jest wyjaśnienieGROUP BY
klauzula część błędu?