主题:一堆杂乱无章的数,如何统计出现的次数,代码应如何写呢,请高手支招
icbccom
[专家分:0] 发布于 2009-11-09 13:37:00
DBF表----A1
-----------------------------------------------------------------
表名 | 参数
P0001 | 29,24,35,02,34,20,31,36,10,09,25,14,28,01,26,23,15,33,
P0002 | 08,19,20,11,01,02,35,03,16,23,27,34,32,29,25,30,12,22,
P0003 | 26,21,11,22,16,24,12,27,33,13,15,18,04,05,19,02,03,31,
P0004 | 29,34,32,27,07,16,01,25,08,30,22,18,35,23,31,11,06,12,
P0005 | 04,14,05,06,08,21,17,01,36,34,13,22,03,23,33,24,25,30,
...... 共有1万条记录
-----------------------------------------------------------------
现在需要从A1表中取出 多张表(如8张) 来统计各数值出现的次数,代码应如何写呢,请高手支招。
需要的结论如下(举例):
8次: 20
5次:01,12,15
3次:03,04,09,23,29,33,35,36
2次:06,07,11,16,19
1次: …
0次:…
回复列表 (共28个回复)
沙发
sywzs [专家分:5650] 发布于 2009-11-09 13:46:00
?OCCURS("20",参数)
板凳
jianzho [专家分:7560] 发布于 2009-11-10 09:28:00
编一小段程序可实现每个数据出现的次数的统计,可用QQ联系,帮你实现!
3 楼
icbccom [专家分:0] 发布于 2009-11-10 10:10:00
谢谢sywzs、jianzho 解答,感谢感谢!!再次请教用SQL如何合并以下的“参数”
DBF表----A1
-----------------------------------------------------------------
表名 | 参数
P0001 | 29,24,35,02,34,20,31,36,10,09,25,14,28,01,26,23,15,33,
P0002 | 08,19,20,11,01,02,35,03,16,23,27,34,32,29,25,30,12,22,
P0003 | 26,21,11,22,16,24,12,27,33,13,15,18,04,05,19,02,03,31,
P0004 | 29,34,32,27,07,16,01,25,08,30,22,18,35,23,31,11,06,12,
P0005 | 04,14,05,06,08,21,17,01,36,34,13,22,03,23,33,24,25,30,
...... 共有1万条记录
-----------------------------------------------------------------
可问题是用SQL 如何实现参数合并在一起。即 P0001--P008 各参数合并成“29,24,35,.....15,33"
我用了“自定义函数”但提示“文本超长”的错误。语句如下:
sele sumc("参数") from A1
function sumc
lparameters cField
lc=''
scan
lc=lc+alltrim(&cField)
endscan
return lc
----------------------方法2 用scan 但不能达到优化程序速度的目的
sele A1
scan
lc=lc+alltrim(A1.参数)
endscan
for F=1 to 36 &&注参数中共有36个数值
? OCCURS( padl(F,2,"0"),Lc ) && 统计出现次数
endfor
4 楼
zhaoyufei [专家分:550] 发布于 2009-11-16 21:52:00
用备注型字段不就解决了
5 楼
fyyylyl [专家分:8550] 发布于 2009-11-17 09:45:00
n=36
Dime MyArray(n,2)
For I=1 To n
MyArray(I,1)=Padl(Alltrim(Str(I)),2,'0')
Select OCCURS(MyArray(I,1),Bz) As nCount From A1 Into Cursor MyTable
Sum nCount To MyArray(I,2)
Endfor
结果存于数组Myarray中。
6 楼
cbl518 [专家分:57140] 发布于 2009-11-17 17:41:00
用 OCCURS 函数统计太慢了!!!
7 楼
cbl518 [专家分:57140] 发布于 2009-11-17 17:47:00
1:将所有的此类字段汇总为一个表中
8 楼
cbl518 [专家分:57140] 发布于 2009-11-17 17:48:00
2:将汇总表导成文本文件
9 楼
cbl518 [专家分:57140] 发布于 2009-11-17 17:48:00
3:根据每行数据的个数,建同样数量字段的一个数据表
10 楼
cbl518 [专家分:57140] 发布于 2009-11-17 17:49:00
4:将成文本文件导入该表
我来回复