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


        请十豆三老师帮我看看:如何从一个总表里面把不同的记录筛选到其他不同过的表里<br />

        我用的是VFP6.0<br />

现在有5个表,表的结构完全一样,有单位编号、个人编号、期号三个字段,均是字符型。表名分别是总表.dbf、00001250.dbf、00001251.dbf、00001253.dbf、00001254.dbf。总表里面同一个个人编号的人有10-20条左右不等的记录,分别对应不同的单位编号和期号。现在想将总表里面同一个人编号对应的所有记录全部加入00001250.dbf、00001251.dbf、00001253.dbf、00001254.dbf中的一个表里面。筛选的条件是每个个人编号对应的最后一个期号所对应的单位编号。比如某个个人编号对应的最后一个期号所在记录的单位编号是00001250,则将总表里面该个人编号所对应的所有记录全部加入表00001250.dbf里。

请问我该如何做?

VFP基础知识 程序开发 VisualFoxPro

宇宙.棒子? 10 years, 8 months ago
<fieldset> <legend class="font_bold"> 引用: </legend>

   <fieldset> <legend class="font_bold"> 引用于: 2013-12-29 14:24:30
把你的样表和结果表上传到这里吧: </legend> </fieldset>

</fieldset>


已经上传了,麻烦十豆三老师了为何不压缩成一个文件再上传,算了,已下载。

以下代码在 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

八云★黑岩 answered 10 years, 8 months ago

  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


RGM-89S answered 10 years, 8 months ago

Your Answer