var
sumwz0,sumwz1,sumwz2,sumwz3,sumwz4 :string;
begin
with Query1 do
begin
  Close;
  SQL.Clear;
  SQL.Add(' Select sum(je) as sumwz0 from temp.db where hm=wz0 ');
  SQL.Add(' Select sum(je) as sumwz1 from temp.db where hm=wz1 ');
  SQL.Add(' Select sum(je) as sumwz2 from temp.db where hm=wz2 ');
  SQL.Add(' Select sum(je) as sumwz3 from temp.db where hm=wz3 ');
  SQL.Add(' Select sum(je) as sumwz4 from temp.db where hm=wz4 ');
  Open;
  PrePare;
  sumwz0:=FieldByName('sumwz0').AsString;;
  sumwz1:=FieldByName('sumwz1').AsString;;
  sumwz2:=FieldByName('sumwz2').AsString;;
  sumwz3:=FieldByName('sumwz3').AsString;;
  sumwz4:=FieldByName('sumwz4').AsString;;
end;
end;
end.
我是想求的sumwz0..sumwz4的值打印它,上面的不行!

解决方案 »

  1.   

    你的Query返回多个数据集,用以下语句可以实现:Select sum(je) as sumje from temp.db
    where( hm=wz1 or hm=wz2 or hm=wz3 or hm=wz4) group by hm
      

  2.   

    但是sumje怎么能放到报表里面!
      

  3.   

    但是sumje怎么能放到报表里面!
      

  4.   

    SQL.Add('Select sumwz0, sumwz1, sumwz2, sumwz3, sumwz4 from');
      SQL.Add('( Select 1 as t, sum(je) as sumwz0 from temp.db where hm=wz0 ) a join');
      SQL.Add('( Select 1 as t, sum(je) as sumwz1 from temp.db where hm=wz1) b on a.t=b.t join');
      SQL.Add(' (Select 1 as t, sum(je) as sumwz2 from temp.db where hm=wz2 ) c on c.t=b.t join');
      SQL.Add('( Select 1 as t, sum(je) as sumwz3 from temp.db where hm=wz3) d on d.t = c.t join ');
      SQL.Add('( Select 1 as t, sum(je) as sumwz4 from temp.db where hm=wz4) e on e.t=d.t');不过这样的语句不是很好,你的问题应该可以用别的方法实现。
      

  5.   

    每个select中间加个union 试试:
    SQL.Add(' Select sum(je) as sumwz0 from temp.db where hm=wz0 ');
    SQL.Add(' union ');
    SQL.Add(' Select sum(je) as sumwz1 from temp.db where hm=wz1 ');
    SQL.Add(' union ');
    ...
      

  6.   

    用union是可以的,如果你的数据库支持case语句,也可以用。