Bs为integer  Xm为string  Jg为Float
数据表如下:
Bs      Xm      Jg
1       计算1   120
1       计算2   300
2       计算3   500
2       计算4   500
1       合计1
2       合计2
现在我用如下语句,只能够计算出Bs为1的Jg的总和,
但有什么办法能把这个总和放入Bs为1的合计1这个记录的Jg字段中?
 with Query2 do
  begin
    close;
    sql.Clear;
    sql.Add('SELECT SUM(Jg)as 合计 FROM TC WHERE Bs='+inttostr(1));
    open;
  end;//wiht
最终显示效果如下:
Bs      Xm      Jg
1       计算1   120
1       计算2   300
1       合计1   420
2       计算3   500
2       计算4   500
2       合计2   1000
请指教。

解决方案 »

  1.   

    Bs      Xm      Jg
    1       计算1   120
    1       计算2   300
    1       合计1   420
    2       计算3   500
    2       计算4   500
    2       合计2   1000
    想这个样子??? 如果你bs里面的值多的话,就必须用存储过程加游标了
    给个思路:
    首先得到所以bs值(去掉重复)
    用游标循环每个bs值
    针对每个值再select *from table
    union
    select 1,2,sum(jg) from table where bs = 循环的bs值
    //最好把这个结果放到一个临时表中
    循环结束后把所有临时表union起来就是结果了
      

  2.   

    SELECT SUM(Jg) as 合计 FROM TC group by Bs
      

  3.   

    直接用一条select语句,不太容易。可以到sql server板块问一下。看看是否有答案。如果用sql编程或者再DELPHI里编程处理,就不难了
      

  4.   

    不知道你用什么显示?是grid之类的,你可以用DxGrid这样有自动汇总的,就不用写Sql了
      

  5.   


    select Bs,Xm,Jg from tc
    union
    select Bs,'合计'+ convert(varchar(10),bs)  as xm ,sum(jg ) as jg from tc 
    group by bs
      

  6.   

    上面的我没试,你可以调一下就可以了,就是这个思路,
    你可以在外面再select一次,然后按照bs 排下序就可以得到你期望的结果了。
      

  7.   

    MoveFirst() 的是标准答案,呵呵
      

  8.   

    with query1 do
    begin
      sql.add('select Bs,Xm,Jg from tc');
      sql.add('union');
      sql.add('select Bs,'合计'+ convert(varchar(10),bs)  as xm ,sum(jg ) as jg from tc group by bs');
    end;//with
    我这样运行出错呀,是不是哪里写错了,请指教!
      

  9.   

    sql.add('select Bs,'合计'+ convert(varchar(10),bs)  as xm ,sum(jg ) as jg from tc group by bs');改成
    sql.add('select Bs,''合计''+ convert(varchar(10),bs)  as xm ,sum(jg ) as jg from tc group by bs');
      

  10.   

    sql.add('select Bs,'合计'+ convert(varchar(10),bs)  as xm ,sum(jg ) as jg from tc group by bs');改成
    sql.add('select Bs,''合计''+ convert(varchar(10),bs)  as xm ,sum(jg ) as jg from tc group by bs');
    运行出错,出错信息如下:
    DBISAM Engine Error # 11949 SQL parsing error - Expected FROM but instead found ( in SELECT SQL statement at line 1, column 26.
      

  11.   

    sql.Clear;
    sql.Add('select * from tc 
             union 
             select Bs,''合计''+ convert(varchar(10),bs) as xm ,sum(jg) as jg 
             from tc  group by bs');
    open;
    这么写试一下
      

  12.   

    select Bs,Xm,Jg
    from (
    select Bs,Xm,Jg,1 as ordertype from tc
    union all
    select Bs,'合计'+ convert(varchar(10),bs)  as xm ,sum(jg) as jg,2 as ordertype from tc 
    group by bs
    )
    order by bs,ordertype,Xm
      

  13.   

    改成这样:
    sql.Clear;
    sql.Add('select * from tc 
             union 
             select Bs,''合计''+ convert(varchar(10),bs) as xm ,sum(jg) as jg 
             from tc  group by bs');
    open;
    运行出错,出错信息如下:
    DBISAM Engine Error # 11949 SQL parsing error - Expected FROM but instead found ( in SELECT SQL statement at line 1, column 49.