我用的是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,不知道为什么
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,不知道为什么
select后的字段在有group by 的语句中要么放在group by后,如不,则必须放在组合函数里,比如sum,count,min,max等等
表示把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个结果呢? 想想看就很容易理解了。