一张数据表,包括地区,金额等字段。
有一些表达式,类似:“上海+江苏+黑龙江-湖南+湖北 ” 等
要根据这些表达式统计出表达式对应的金额。
如:
  地区       金额
  上海        10
  江苏        15
黑龙江        13
  湖南        12
  湖北        10则此表达式的值为:10+15+13-12+10=36 这个查询怎么做?

解决方案 »

  1.   

    with query1 do begin
      close;
      sql.clear;
      sql.add(' select 金额 from 表a');
      try
        open;
      except
        showmessage('');
        exit;
      end;
      first;
      zje:=0;
      while not eof do begin
        zje:=fieldbyname('金额')+zje;
        next; 
      end; 
      

  2.   

    把“上海+江苏+黑龙江-湖南+湖北”转为“上海+江苏+黑龙江+-湖南+湖北”,再按+分隔符转入表变量@t:
    fa   fm
    上海  1
    江苏  1
    黑龙江  1
    -湖南  1
    湖北  1

    再根据-转为:
    fa   fm
    上海  1
    江苏  1
    黑龙江  1
    湖南  -1
    湖北  1

    再关联数据表,
    select sum(a.fm*b.金额) as fsum
    from @t a
    left joib 数据表 b on a.fa=b.地区
      

  3.   

    sz_haitao:
    我用的是access数据库,能用你的方法吗?