主题:高老师请进(如何筛选连续三个月以上超标准的记录2)
高老师您好:
之前我发过一篇求助贴《如何筛选连续三个月以上超标准的记录》,按您的代码我试过后出现一个问题,研究好久没有得解。今天只好继续求教!
首先我将原贴内容粘过来,如下:
------------------------------------------------
有两个数据表,一个为“定额”表,一个为“销售”表。“定额”表中存放所有个体户定额信息,每个个体户仅有一条记录,其中包括字段(定额),每个户的定额不同,例如有6000,或是8000等等;“销售”表中存放个体户各月销售信息,全年下来每个个体户有12条记录(1个月一条),其中包括字段(销售额,月份),每个月销售额也不同。
现在想将两个表按对应户进行统计,“销售”表中连续3个月以上销售额超过“定额”表中对应的个体户的记录,如何写出一个命令或是小程序?
举例:吉祥商店 ,该商店在定额表中“定额”为5000元(定额字段为5000),在“销售”表中,该商店1月份(销售额字段)为5000,2月份为6500,3月份为4500,4月份为4800,5月份为6600,6月份为6500,7月份为6100,8月份为6100,9月份为6000,10月份为5000,11月份为4800,12月份为4900。要求把该商店“销售”表中连续3个月以上超过5000的记录筛选出来。
------------------------------------------------------------------------------
以下是您上次的回答:
你应该给定额表再加个字段,暂且起名:"超额"
假如你的两个表都是打开的,
select 销售表
index on 月份 to myidx
select 定额表
scan
select 销售表
set filter to 户名 = 定额表.户名
for i = 1 to 10
go i
if 销售额 >= 定额表.定额
skip
if 销售额 >=定额表.定额
skip
if 销售额 >=定额表.定额
select 定额表
repl 超额 with '是'
exit
else
loop
endif
else
loop
endif
else
loop
endif
endfor
select 定额表
ends
set filter to 超额 = '是'
brow
你所看到的是定额表中连续三个月或以上超额的个户
--------------------------------------------------------------------
我如今的做法:
建立三个表,b1(月份,定额,识别号) b2(月份,销售额,识别号) b3(识别号,月份1,月份1,月份3,销售额),
我以B1“定额”为准 ,用b2的“销售额”去比,假如连续三个月的销售额大于定额,就将三个月的记录存入于b3中,代码如下:
SET TALK OFF
SET SAFETY OFF
SELECT 1
USE b1.dbf
INDEX on yf(月份字段实际是字母) TO a
SELECT 2
USE b2.dbf
SELECT 3
USE b3.dbf
SELECT 2
SCAN
SELECT 1
SET FILTER TO sbh=b->sbh
FOR i=1 TO 10
m1=0
m2=0
m3=0
GO i
IF xse>b->de
m1=MONTH(yf)
SKIP
IF xse>b->de
m2=MONTH(yf)
SKIP
IF xse>b->de
m3=MONTH(yf)
SELECT 3
APPEND BLANK
REPLACE yf WITH a->yf,sbh WITH a->sbh,yf1 WITH m1,yf2 WITH m2,yf3 WITH m3
EXIT
ELSE
LOOP
ENDIF
ELSE
LOOP
ENDIF
ELSE
LOOP
ENDIF
ENDFOR
SELECT 2
ENDSCAN
举例:
b1 月份 识别号 定额
2009.01.01 11 5000.00
2009.01.01 22 5000.00
b2 月份 识别号 销售额
2009.01.01 11 6000.00
2009.02.03 11 7000.00
.......
2009.12.02 11 4500.00
2009.01.02 22 5600.00
2009.02.01 22 6500.00
.......
2009.12.03 22 6700.00
但是运行完后,b3里出来的记录是这样的
识别号 月份1 月份2 月份3 销售额1 销售额2 销售额3
11 4 5 6 ......
22 4 4 5 ......
经发现,只要这两家连续三个月超定额的月份相同,就会出现这种情况。如果连续三个月超定月份不同,则22就检测不出连续三个月的记录。
请高老师指教。
之前我发过一篇求助贴《如何筛选连续三个月以上超标准的记录》,按您的代码我试过后出现一个问题,研究好久没有得解。今天只好继续求教!
首先我将原贴内容粘过来,如下:
------------------------------------------------
有两个数据表,一个为“定额”表,一个为“销售”表。“定额”表中存放所有个体户定额信息,每个个体户仅有一条记录,其中包括字段(定额),每个户的定额不同,例如有6000,或是8000等等;“销售”表中存放个体户各月销售信息,全年下来每个个体户有12条记录(1个月一条),其中包括字段(销售额,月份),每个月销售额也不同。
现在想将两个表按对应户进行统计,“销售”表中连续3个月以上销售额超过“定额”表中对应的个体户的记录,如何写出一个命令或是小程序?
举例:吉祥商店 ,该商店在定额表中“定额”为5000元(定额字段为5000),在“销售”表中,该商店1月份(销售额字段)为5000,2月份为6500,3月份为4500,4月份为4800,5月份为6600,6月份为6500,7月份为6100,8月份为6100,9月份为6000,10月份为5000,11月份为4800,12月份为4900。要求把该商店“销售”表中连续3个月以上超过5000的记录筛选出来。
------------------------------------------------------------------------------
以下是您上次的回答:
你应该给定额表再加个字段,暂且起名:"超额"
假如你的两个表都是打开的,
select 销售表
index on 月份 to myidx
select 定额表
scan
select 销售表
set filter to 户名 = 定额表.户名
for i = 1 to 10
go i
if 销售额 >= 定额表.定额
skip
if 销售额 >=定额表.定额
skip
if 销售额 >=定额表.定额
select 定额表
repl 超额 with '是'
exit
else
loop
endif
else
loop
endif
else
loop
endif
endfor
select 定额表
ends
set filter to 超额 = '是'
brow
你所看到的是定额表中连续三个月或以上超额的个户
--------------------------------------------------------------------
我如今的做法:
建立三个表,b1(月份,定额,识别号) b2(月份,销售额,识别号) b3(识别号,月份1,月份1,月份3,销售额),
我以B1“定额”为准 ,用b2的“销售额”去比,假如连续三个月的销售额大于定额,就将三个月的记录存入于b3中,代码如下:
SET TALK OFF
SET SAFETY OFF
SELECT 1
USE b1.dbf
INDEX on yf(月份字段实际是字母) TO a
SELECT 2
USE b2.dbf
SELECT 3
USE b3.dbf
SELECT 2
SCAN
SELECT 1
SET FILTER TO sbh=b->sbh
FOR i=1 TO 10
m1=0
m2=0
m3=0
GO i
IF xse>b->de
m1=MONTH(yf)
SKIP
IF xse>b->de
m2=MONTH(yf)
SKIP
IF xse>b->de
m3=MONTH(yf)
SELECT 3
APPEND BLANK
REPLACE yf WITH a->yf,sbh WITH a->sbh,yf1 WITH m1,yf2 WITH m2,yf3 WITH m3
EXIT
ELSE
LOOP
ENDIF
ELSE
LOOP
ENDIF
ELSE
LOOP
ENDIF
ENDFOR
SELECT 2
ENDSCAN
举例:
b1 月份 识别号 定额
2009.01.01 11 5000.00
2009.01.01 22 5000.00
b2 月份 识别号 销售额
2009.01.01 11 6000.00
2009.02.03 11 7000.00
.......
2009.12.02 11 4500.00
2009.01.02 22 5600.00
2009.02.01 22 6500.00
.......
2009.12.03 22 6700.00
但是运行完后,b3里出来的记录是这样的
识别号 月份1 月份2 月份3 销售额1 销售额2 销售额3
11 4 5 6 ......
22 4 4 5 ......
经发现,只要这两家连续三个月超定额的月份相同,就会出现这种情况。如果连续三个月超定月份不同,则22就检测不出连续三个月的记录。
请高老师指教。