请十豆三老师帮小弟我看看:怎么从一个总表里面把不同的记录筛选到其他不同过的表里

请十豆三老师帮我看看:如何从一个总表里面把不同的记录筛选到其他不同过的表里
本帖最后由 rayhua 于 2013-12-28 09:20:32 编辑
我用的是VFP6.0
现在有5个表,表的结构完全一样,有单位编号、个人编号、期号三个字段,均是字符型。表名分别是总表.dbf、00001250.dbf、00001251.dbf、00001253.dbf、00001254.dbf。总表里面同一个个人编号的人有10-20条左右不等的记录,分别对应不同的单位编号和期号。现在想将总表里面同一个人编号对应的所有记录全部加入00001250.dbf、00001251.dbf、00001253.dbf、00001254.dbf中的一个表里面。筛选的条件是每个个人编号对应的最后一个期号所对应的单位编号。比如某个个人编号对应的最后一个期号所在记录的单位编号是00001250,则将总表里面该个人编号所对应的所有记录全部加入表00001250.dbf里。
请问我该如何做?

------解决方案--------------------
SELECT 单位编号,个人编号,期号 FROM 总表 WHERE 期号 IN (SELECT MAX(期号) FROM 总表 GROUP BY 个人编号) ORDER BY 单位编号 INTO CURSOR T
SCAN
   SELECT * FROM 总表 WHERE 个人编号==T.个人编号 INTO TABLE [A]+T.单位编号
   *BROWSE
ENDSCAN

------解决方案--------------------
引用:
引用于: 2013-12-29 14:24:30
把你的样表和结果表上传到这里吧:http://access911.net/csdn/

已经上传了,麻烦十豆三老师了为何不压缩成一个文件再上传,算了,已下载。
以下代码在 VFP6 及 VFP9 中测试通过。
Close Databases All
Select 个人编号,Max(期号) As 最后期号 Into Cursor T1 From 总表 Group By 个人编号
Select A.*,B.单位编号 Into Cursor T2 From T1 A Inner Join 总表 B On A.个人编号=B.个人编号 And A.最后期号=B.期号 Order By A.个人编号
Select T2
Scan
lcTableName=Alltrim(单位编号)
If !File(lcTableName)
Select * Into Table '&lcTableName.' From 总表 Where 1=0
Endif
Use '&lcTableName.' Again In Select('XX') Alias XX
Select XX
Append From 总表 For 个人编号=T2.个人编号
Endscan
Close Databases All