rs.Open "select 基本信息.医保卡号,
                基本信息.姓名,
                性别,
                出生年月,
                所属单位,
                去年余额+sum(今年收入金额)-sum(今年支出金额),
                sum(今年收入金额),
                sum(今年支出金额),
                去年余额,
                去年支出 
                from 基本信息,收入表,支出表,结算表 
                group by 收入表.医保卡号", cn, adOpenStatic, adLockOptimistic有报错  试图执行的查询中不包含作为合计函数一部分的特定表达式"医保卡号"请问这是怎么回事.

解决方案 »

  1.   

    Group by 语法结构是除了SUM的字段外, 其他字段都必须列在Group by 后面。 
    再者,多张表联接,你根本就没写表与表之前联接条件,能通过才有鬼了。
      

  2.   

    --假设"本信息"与"收入表,支出表,结算表"的联接条件都是EmployeeID
    select 
    a.医保卡号,
    a.姓名,
    a.性别,
    a.出生年月,
    a.所属单位,
    d.去年余额+sum(b.今年收入金额)-sum(c.今年支出金额),
    sum(b.今年收入金额),
    sum(c.今年支出金额),
    d.去年余额,
    c.去年支出 
    from 
    基本信息 a, 收入表 b, 支出表 c, 结算表 d
    where
    a.ID=b.EmployeeID and  a.ID=c.EmployeeID and d.ID=b.EmployeeID and
    group by 
    b.医保卡号
      

  3.   

    --更正
    --假设"本信息"与"收入表,支出表,结算表"的联接条件都是EmployeeID
    select 
    a.医保卡号,
    a.姓名,
    a.性别,
    a.出生年月,
    a.所属单位,
    d.去年余额+sum(b.今年收入金额)-sum(c.今年支出金额),
    sum(b.今年收入金额),
    sum(c.今年支出金额),
    d.去年余额,
    c.去年支出 
    from 
    基本信息 a, 收入表 b, 支出表 c, 结算表 d
    where
    a.ID=b.EmployeeID and  a.ID=c.EmployeeID and a.ID=d.EmployeeID
    group by 
    b.医保卡号
      

  4.   

    Group by 语法结构你写错了, Group by 必须写成:
    group by 
    a.医保卡号,
    a.姓名,
    a.性别,
    a.出生年月,
    a.所属单位
      

  5.   

    要么你就不要把这些项都写上,写成了:
    select
             a.医保卡号,
    a.姓名,
    a.性别,
    a.出生年月,
    a.所属单位,
    ……在Group by 后面就必须加上:
             a.医保卡号,
    a.姓名,
    a.性别,
    a.出生年月,
    a.所属单位,
    ……  Select后面有几项非计算项,就必须在Group by 后面加几项。