select 编号,姓名,部门,班组,sum(考勤)as考勤次数 from 考勤表 where (刷卡时间>= '''+a2+''') and (刷卡时间<= '''+a3+''') group by  编号 其中考勤表的结构是:(编号,姓名,部门,班组 考勤(int),  工时)运行程序的时候出现错误:"列姓名,部门,班组在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在
 GROUP BY语句中."因为我主要用来汇总指定日期个人考勤次数的, 所以不能把部门, 班组放在GROUP BY语句中,但是又不知道怎么改正,
  
望各位大大教我.

解决方案 »

  1.   

    修改为:
    select 编号,姓名,部门,班组,sum(考勤)as考勤次数 from 考勤表 where (刷卡时间>= '''+a2+''') and (刷卡时间<= '''+a3+''') group by 编号,姓名,部门,班组GROUP BY中除了GROUP BY的字段以后其他的都需要用到了聚合等函数才可以选取,否则不能选取
      

  2.   

    当 SELECT 语句中包含 GROUP BY 关键字时,对可以在选择列表中指定的项有一些限制。在该选择列表中所允许的项目是: 
    1.分组列。
    2.
    为分组列中的每个值只返回一个值的表达式,例如将列名作为其中一个参数的聚合函数。这些函数称为矢量聚合。
    由于语句中的姓名,部门,班组未在group by 中体现,所以出错
    解决方法有二种:
    一种为楼上所述
    第二种:
    在姓名,部门,班组前加聚合函数。即
    MIN(姓名),min(部门)等