有表1:A
字段名  LAOBAONO,LAOBAONAME
        1     毛巾
        2       手套
  表2:B
字段名  ZHIGONGNO,LAOBAONO,LINGYONGNUM
        1            1           3
        1            2           4
        2            1           5
        2            2           5
要求输出报表C:
LAOBAONO,LINGYONGNUM
1        8
2 9编写语句如下
close;
sql.Clear;
sql.Add('select a.laobaono ,sum(b.lingyongnum)');
sql.add(' from a,b');
sql.add('where a.laobaono=b.laobaono');
sql.add('group by a.laobaono');
open;
可是输出结果如下:
laobaono,lingyongnum
1 8
1 8
请问语句哪里不对,该如何改

解决方案 »

  1.   

    去掉,sql.add('group by a.laobaono'); 或改成sql.add('order by a.laobaono');
      

  2.   

    字段“laobaono”是否设置为字符?
    如果设成了字符形式,考虑空格影响!建议改为:
    close;
    sql.Clear;
    sql.Add('select a.laobaono ,sum(b.lingyongnum)');
    sql.add(' from a,b');
    sql.add('where rtrim(a.laobaono)=rtrim(b.laobaono)');//避免空格影响!
    sql.add('group by a.laobaono');
    open;
      

  3.   

    题外:WHERE语句中的关联有何意义!?
    直接
    sql.Add('select laobaono ,sum(lingyongnum)');
    sql.add(' from b');
    sql.add('group by laobaono');
    不行吗?
      

  4.   

    SQL.Add('select laobaono ,sum(lingyongnum) from b group by laobaono');
    这样可以,
    不需要a,b关联当你要得到:
    LAOBAONAME,LINGYONGNUM
    手套         8
    毛巾         9
    就这样写:
    SQL.Add('select a.laobaoname, sum(b.lingyongnum) from a, b where a.laobaono = b.laobaono group by laobaoname')