请问大家一个问题:
假设有
表1  merchant,字段:MerID,MerName,saleAmt,taxAmt,SettID;(SettID与MerID是一对多的关系)
表2   MerSale,字段,MerID,MerName,saleAmt,taxAmt,SettID,RecordID; 
要从merchant表中,选择出saleAmt>0的,放到另外一张表MerSale中,RecordID是一个序列号,相同SettID的记录拥有相同的RecordID.假设数据为:
merchant:
A10086,null,1000,20,A10086;
A10087,null,400,10,A10086;
A10088,null,200,5,A10086;
B10000,null,1500,30,B10000;
B10001,null,1300,25,B10000;
C10007,null,5200,80,C10007;
C10008,null,4500,64,C10007;
执行查询语句后,MerSale中的数据为:
A10086,null,1000,20,A10086,1;
A10087,null,400,10,A10086,1;
A10088,null,200,5,A10086,1;
B10000,null,1500,30,B10000,2;
B10001,null,1300,25,B10000,2;
C10007,null,5200,80,C10007,3;
C10008,null,4500,64,C10007,3;

解决方案 »

  1.   

    http://topic.csdn.net/u/20120330/12/de3a850b-fa35-464e-96d6-e2f8e5f142b1.html?46413
      

  2.   

    update MerSale set RecordID = nvl((select count(1) from merchant where SettID =  MerSale.MerID),0)
      

  3.   

    很抱歉,我没有说清楚,MerSale里面已经存在一些数据的了,即每次查询后插入的RecordID,都不能与表中原有的RecordID重复的。每一个RecordID都是独一无二的。
      

  4.   

    create table merchant(MerID varchar2(20),saleAmt int,SettID varchar2(20))insert into merchant values('A10086',1000,'A10086')insert into merchant values('A10087',400 ,'A10086')insert into merchant values('A10088',200 ,'A10086')insert into merchant values('B10000',1500,'B10000')insert into merchant values('B10001',1300,'B10000')insert into merchant values('C10007',5200,'C10007')insert into merchant values('C10008',4500,'C10007')create table MerSale(MerID varchar(10),RecordID int)insert into MerSale values('A10086',null)insert into MerSale values('A10087',null)insert into MerSale values('A10088',null)insert into MerSale values('B10000',null)insert into MerSale values('B10001',null)insert into MerSale values('C10007',null)insert into MerSale values('C10008',null)update MerSale set RecordID = nvl((select count(1) from merchant where SettID = MerSale.MerID),0) select * from  MerSale/*
    MERID        RECORDID
    ---------- ----------
    A10086              3
    A10087              0
    A10088              0
    B10000              2
    B10001              0
    C10007              2
    C10008              07 rows selected.*/drop table MerSaledrop table merchant
      

  5.   

    使用dense_rank排序,update表数据
      

  6.   

    可以写个方法,传SettID返回一个RecordID,然后插入就简单了