将数据集中的相同项目合并

问题描述:一张表中有两个字段,一个是名称,一个是金额,假如名称相同,则合并,金额相加。

解法:

1、先建表

[sql]create table tablet
(
  name     VARCHAR2(40) not null,
  price    NUMBER(4) not null
)
create table tablew
(
  name     VARCHAR2(40) not null,
  price    NUMBER(4) not null
)[/sql]

2、建立两个数据集cds1、cds2,cds1记录原始数据,cds2记录合并后的数据:

[delphi]
begin
  cds1.Close;
  cds1.CommandText := ' select name, price from tablet ';
  cds1.Open;
  cds2.Close;
  cds2.CommandText := ' select name, price from tablew where 1=0 ';
  cds2.Open;
  cds1.First;
  while not cds1.Eof do
  begin
    cds2.First;
    if cds2.Locate('name',cds1.FieldByName('name').AsString,[] ) = false then
    begin
      cds2.Append;
      cds2.FieldByName('name').AsString := cds1.FieldByName('name').AsString;
      cds2.FieldByName('price').AsInteger := cds1.FieldByName('price').AsInteger;
      cds2.Post;
    end
    else begin
      cds2.Edit;
      cds2.FieldByName('price').AsInteger := cds2.FieldByName('price').AsInteger + cds1.FieldByName('price').AsInteger;
      cds2.Post;
    end;
    cds1.Next;
  end;
end;
[/delphi]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值