日期:2014-05-18  浏览次数:20440 次

问个group by的问题
Select [员工表].id ,[员工表].name ,[员工表].department ,[培训表].train ,[培训表].time  
From [员工表] , [培训表]
Where [员工表].ID =[培训表].person_id
group by [员工表].id

报错:
消息 8120,级别 16,状态 1,第 1 行
选择列表中的列 '员工表.name' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。

------解决方案--------------------
Select [员工表].id ,min)[员工表].name_ ,min([员工表].department) ,min([培训表].train) ,min([培训表].time)
From [员工表] , [培训表]
Where [员工表].ID =[培训表].person_id
group by [员工表].id


group by [员工表].id 时,select取其他值,貌似要用表达式,不知道有其他方法没。


------解决方案--------------------
SQL code

--你没有使用任何聚合函数,完全没必要分组,这里一定要分组的话就得把select后面的所有字段加在group by后面
Select a.id ,[员工表].name ,a.department ,b.train ,b.time   
From [员工表]  a, [培训表] b
Where a.ID =b.person_id
group by a.id ,[员工表].name ,a.department ,b.train ,b.time

------解决方案--------------------
肯定错误,楼主要弄清楚group by 的用法,select中的字段要么是group by中的,要么是聚合函数的字段
------解决方案--------------------
把select中的字段,在group by中全部重新写一遍吧。
------解决方案--------------------
用group by的话 在select 里面的查询结果 也必须有group by 
--你没有使用任何聚合函数,完全没必要分组,这里一定要分组的话就得把select后面的所有字段加在group by后面
Select a.id ,[员工表].name ,a.department ,b.train ,b.time
From [员工表] a, [培训表] b
Where a.ID =b.person_id
group by a.id ,[员工表].name ,a.department ,b.train ,b.time