这句SQL总是报告“试图执行一个合计函数中不包含特定表达式:余额”
Dim cmd As ADODB.Command
    Dim rst As ADODB.Recordset
    Set cmd = New ADODB.Command
    cmd.ActiveConnection = DataE1.conFund
    cmd.CommandText = "delete * from 部门余额表"
    cmd.Execute
    
    cmd.CommandText = "insert into 部门余额表 select max(操作id) as 操作id,日期,余额 from 日常操作表 where 部门编号='" _
                    & strDpNo & "' group by 日期"cmd.execute
难道使用集函数必须将那个字段“余额”也group吗?那样没意义了
不知道问题是否说清楚了
帮一下忙,谢谢

解决方案 »

  1.   

    这要看你想得到什么结果了?如果你只想得到操作ID,就不要在select的字段列表中列出日期、余额等字段。
      

  2.   

    你說得很對,id,日期,余额都必段在group by 中,除非他們是運算式,如max,sum,count等
      

  3.   

    nod,需要group
    GROUP BY 表达式必须与选择列表表达式要完全匹配
      

  4.   

    id,日期,余额放在group by 中
      

  5.   

    cmd.CommandText = "insert into 部门余额表 select max(操作id) as 操作id,日期,余额 from 日常操作表 where 部门编号='" _
                        & strDpNo & "' order by 操作id Desc group by 日期,余额"
      

  6.   

    老兄,你的问题没有说清楚,回答也是白说,比如,你是要哪余额最大值还是操作员最大值?看你的代码是操作员最大值,但是你的写法不对。分两种情况介绍:
    1、操作员最在值:
        cmd.CommandText = "insert into 部门余额表 select 操作id,日期,余额 from 日常操作表 where 操作id=(select max(操作id) from 日常操作表  where 部门编号='"& strDpNo & "' group by 日期,操作id)"
    2、余额最大值:
       同上
      

  7.   

    你的意图是列出每日最后一笔交易的余额:"insert into 部门余额表 select a.操作id,a.日期,b.余额 _
    from (select max(a.操作id) as 操作id,日期 from 日常操作表 group by 日期)as a, _
    (select 余额,操作id from 日常操作表) as b _
    where 部门编号='" & strDpNo & "' and a.操作id=b.操作id "
      

  8.   

    如果是Access库还有更简单的方法:
    "insert into 部门余额表 select max(操作id) as 操作id,日期,last(余额) as 余额 from 日常操作表 where 部门编号='" & strDpNo & "' group by 日期"
      

  9.   

    如果操作id不是自动编号:
    "insert into 部门余额表 select max(操作id) as 操作id,日期,last(余额) as 余额 from 日常操作表 where 部门编号='" & strDpNo & "' group by 日期 order by 操作id"
      

  10.   

    感谢各位的讨论of123看透了我的意图,不过还不是最准确,意图是选出一个部门所有发生操作日的最后一次余额
    最后我的写法为:
    "insert into 部门余额表 select 操作id,日期,余额 from 日常操作表 where 操作id in (select max(操作id) from 日常操作表 where 部门编号='" & strDpNo & "' group by 日期) order by 日期"
      

  11.   

    帖子结不了?
    贴子回复次数大于跟给分次数 ???????????????????what on earth?