SELECT a.员工编号,c.姓名 as name,b.dept_name as dept_name,sum(积分) as jf FROM 员工奖罚表 as A,部门表 as B, 员工信息表 as C where A.员工部门一级=B.deptid and A.员工编号=C.员工编号 group by a.员工编号,c.姓名 order by jfMicrosoft OLE DB Provider for SQL Server 错误 '80040e14' 列 'B.dept_name' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。 我知道这个毛病是什么,但是我在后面要用到B.dept_name,但是还不能让'B.dept_name参与分组。我应该怎么写呢? 

解决方案 »

  1.   

    使用聚合函数max min等,或用连接
      

  2.   

    'B.dept_name'是部门名称,怎么用MAX呀。
    怎么用连接?
      

  3.   

    那就先分组,再取b表的dept_n
    select d.*,b.dept_name as dept_name
      from (
       SELECT a.员工编号,c.姓名 as name,sum(积分) as jf 
         FROM 员工奖罚表 as A, 员工信息表 as C 
        where A.员工编号=C.员工编号 
        group by a.员工编号,c.姓名) d,部门表 as B 
     where d.员工部门一级=B.deptid 
     order by jf