我用的是ACCESS
sqlstr = " SELECT DC1.R, DC1.D, DC1.K, DC1.C, DC1.y1, DC1.t, DC1.t1, DC1.s, Sum([s]) AS sums FROM DC1 where s<>'0' group by d,k,c,r,y1,t,t1"
放在数据库中可以查询出结果
在程序中,提示执行的查询中不包含合计函数一部分的S,不知道为什么

解决方案 »

  1.   

    SUM 只能用于数字列。"where s<>'0' "从这儿看,s列又是字符列,而且“放在数据库中可以查询出结果”了,不明白。
      

  2.   

    接上,在SQL SERVER中,不管是字符列还是数字列,加上''单引号都是合法的,那么在ACCESS中呢?
      

  3.   

    sqlstr = " SELECT DC1.R, DC1.D, DC1.K, DC1.C, DC1.y1, DC1.t, DC1.t1, Sum(DC1.s) AS sums FROM DC1 where DC1.s<>'0' group by d,k,c,r,y1,t,t1"
    select后的字段在有group by 的语句中要么放在group by后,如不,则必须放在组合函数里,比如sum,count,min,max等等
      

  4.   

    fyming(农妇,山泉,有点田)说的有道理 看看去掉‘’的结果吧
      

  5.   

    如果是INT型的 不用''也可以
      

  6.   

    ling242a()  回答正确。group by a,b,c,d,e,f
    表示把a,b,c,d,e,f都相等的数据分组。
    那么, 你可以select a,b,c,d,e,f 得到他们相等的数据, 也就是排除了重复数据。
    没有被goup by到的列, 可能在一个数据分组中有很多,
    你怎么可以select出来呢? 那系统到底返回哪个给你, 自然就要用聚合函数了。
    比如统计sum, 求大小max等。显然你这里是要求d,k,c,r,y1,t,t1相等的分组数据。
    那么分组的数据没有包含s, 你当然不能让s参与计算。如果你的目的是要过滤 s<>'0', 那么你可以先过滤s<>'0', 然后生成一个字查询
    在从这个子查询中进行group by的操作。
    DC1.s, Sum([s]) 
    这在一个查询中怎么可以同时出现这2个结果呢? 想想看就很容易理解了。