求较好的算法
现在有这样一张表   
 代码(varchar(4))            时间(datetime)               内容(varchar(200)) 
 0001                                       2006-12-08                           gegegw 
 0001                                       2006-11-07                           gewhh4 
 0001                                       2006-10-01                           hhhfgweg 
 0001                                       2006-08-05                              gewgg 
 ...... 
 0002                                       2006-11-01                           g4h43h 
 0002                                       2006-09-08                           gg4h3h 
 0002                                       2006-08-02                           gwgg4 
 ...... 
 0003                                       2006-06-07                           grhrehrehhreh 
 0003                                       2006-05-05                           grhrhreh 
 0003                                       2005-05-01                           ghsbre 
 ...... 
 0005                                       2006-11-01                           ghsbre 
 ...... 
 说明 
 (以上为同一张表,大约20万条记录,更新是按时间插入新的记录,每月一个代码只有一条记录。 
 为了方便各位理解我是按代码、时间排了序。 
 不用考虑内容列)   
 现在想实现下面一张表 
 代码(varchar(4))         连续次数(int)      时间(datetime) 
 0001         			3                        	2006-12-08 
 0002      			1		2006-11-01 
 0003         			2		2006-06-07    
 0004         			0                        	null 
 0005         			1                        	2006-11-01      
 其中   	 
 代码列   其实是从另外一张代码表,不过这里可以理解为源表的代码,只是在目的表中可能会出现如0004的情况。 
 时间列   是指   该代码在距离指定日期(如2007-01-01)最近一次在表中出现的时间。 
 连续次数列   是指   该代码距离指定日期(如2007-01-01)最近一次出现的,月份连续值。 
 (即,计算月份连续值时,不用考虑时间中的‘日’。当月份出现中断时,哪怕只有一个月,也只算中断月份以后的月数)     
 我自己到了一个算法,要分两次循环 
 第一次循环,先查出其中一家企业的出现的最后日期,再拿月份减一循环到中断月出现,返回循环次数 
 第二次循环,将代码表中的代码逐个用第一个循环运行   
 问题在于第二次循环。 
 代码表中一共有2万多个代码,运行起来,就算不死机,估计也需要很长时间能执行完 
 而系统要求,目的表的生成不能超过20分钟   
 不知道各位高手有没有更好的算法?     
------解决方案--------------------SELECT M.代码,(CASE WHEN COUNT(N.时间)=0 THEN 1 ELSE COUNT(N.时间)),M.时间 
 (select 代码,max(时间) as 时间 FROM 表 GROUP BY 代码) M LEFT JOIN 
 (select A.代码,A.时间 from 表 A LEFT JOIN 表 B  
 ON A.代码=B.代码 AND B.时间=(SELECT MAX(时间) FROM