drop table IF EXISTS tmp_yinhang;
drop table IF EXISTS tmp_groupyinhang;
create table tmp_yinhang (dealdate bigint(100) ,dfzhm varchar(100),dfkhh varchar(100) ,jine bigint(100) ,yue bigint(100),pzh bigint(100) ,gyh varchar(100),cph bigint(100),fy varchar(100),deally varchar(100));
create table tmp_groupyinhang (dealdate bigint(100) ,dfzhm varchar(100),dfkhh varchar(100) ,jine bigint(100) ,yue bigint(100),pzh bigint(100) ,gyh varchar(100),cph bigint(100),fy varchar(100),deally varchar(100));
delimiter $$
DROP PROCEDURE IF EXISTS sp_yinhang $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_yinhang`()
BEGIN
DECLARE vdfzhm,vdfkhh varchar(100);
DECLARE vnum1,vnum2 INT  DEFAULT 0;
DECLARE done INT DEFAULT 0;
DECLARE cur1 CURSOR FOR select dfzhm,count(1) as num from yinhang group by dfzhm order by count(1) desc;
DECLARE cur2 CURSOR FOR select dfkhh,count(1) from tmp_yinhang where dfzhm=vdfzhm group by dfkhh order by count(1) desc;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
OPEN cur1;
REPEAT
FETCH cur1 INTO vdfzhm,vnum1;
if not done then
select vdfzhm,vnum1;
    if vnum1 > 0 then
      insert into tmp_yinhang select * from yinhang where dfzhm=vdfzhm; 
       set vnum1 = vnum1 - 1;
        
         OPEN cur2;
          REPEAT
          if not done then
           FETCH cur2 INTO vdfkhh,vnum2;
           select vdfkhh,vnum2;
            if vnum2 > 0 then
             insert into tmp_groupyinhang select * from tmp_yinhang where dfzhm=vdfzhm and dfkhh=vdfkhh;
              set vnum2 = vnum2 - 1;
           end if;
          end if;
           UNTIL done END REPEAT;  
          CLOSE cur2;
     end if;
                 
                 
end if; UNTIL done END REPEAT;       close cur1;
END  $$
delimiter ;