| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4424 人关注过本帖, 2 人收藏
标题:如何在一个表中寻找出某个字段中的记录它们的长度相同但内容不同
只看楼主 加入收藏
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
结帖率:79.38%
收藏(2)
已结贴  问题点数:20 回复次数:81 
如何在一个表中寻找出某个字段中的记录它们的长度相同但内容不同
例如:1个表中一个字段名称:科目,它有如下内容
   科目 
语文,数学,物理
语文,生物,数学
语文,物理,数学
数学,生物,语文

语文,物理,数学,政治
语文,数学,物理

语文,物理,政治,数学
语文,物理,数学
....
当然在表中前面排列顺序凌乱。
原来想统计各报考科目的数字
select 报名点代码,科类,count(*) as 科数 from ls2 group by 报名点代码,科目
但发现:物理,数学与语文,数学,物理分别统计

实际上语文,物理,数学与语文,数学,物理,它们是考相同的科目,我要把它变成相同的顺序。
ls2.rar (2.37 KB)
如何在一个表中找出它长度相同名称不同,并且只有列出各不相同的一对(语文,数学,物理语文,物理,数学有N对,只要列出一对),然后有相同的顺序替换成,便于统计。

搜索更多相关主题的帖子: 报名点 count 记录 如何 数学 
2014-05-20 13:09
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:658
专家分:2180
注 册:2014-2-7
收藏
得分:4 
尽管楼主的表结构设计并不利于统计报考各科目的人数,但我还是对楼主的问题给出了解决方案:
为 ls2.dbf 新增一个字段 subject c(50),用于保存整理后的报考课目,然后执行如下代码:
程序代码:
CLOSE ALL
USE ls2
SCAN FOR !EMPTY(报考科目)
    cStr = ','+ALLT(报考科目)+','        && 为报考科目加前后定界符,便于使用 STREXTRACT()提取科目
    nNum = OCCURS(',',cStr) - 1          && 报考科目数
    DIMENSION aStr[nNum]                 && 将各科目保存到数组
    FOR i = 1 TO nNum
        aStr[i] = ALLT(STREXTRACT(cStr,',',',',i))
    NEXT
    = ASORT(aStr)                        && 对科目进行排序
    cStr = ''                            && 由数组重新组合成报考科目字符串
    FOR i = 1 TO nNum
        cStr = cStr + IIF(i=1,'',',')+aStr[i]
    NEXT
    REPLACE subject WITH cStr            && 保存排序后的报考科目
ENDSCAN
GO TOP
BROWSE


[ 本帖最后由 liuxingang28 于 2014-5-20 13:57 编辑 ]
收到的鲜花
  • tlliqi2014-05-20 21:41 送鲜花  20朵   附言:学习下

泉城飞狐
2014-05-20 13:56
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
运行此句 aStr[i] = ALLT(STREXTRACT(cStr,',',',',i))提示文件STREXTRACT.prg 不存在
2014-05-20 14:26
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9848
专家分:27241
注 册:2012-2-5
收藏
得分:4 
最好不要对原始表进行操作
程序代码:
Select *,Space(100) km From ls2 Into Cursor Temp ReadWrite 
Scan
   nRow=Alines(Abkkm,报考科目,",")
   =Asort(Abkkm)
   Local lcStr
   lcStr=""
   For lnI=1 To nRow
       lcStr=lcStr+Alltrim(Abkkm[lnI])+Iif(lnI<nRow,",","")
   Endfor
   Replace km With lcStr
EndScan
Browse
*--报名人数统计
Select 报名点代码,km,Count(*) 报名人数 From Temp Group By 1,2 Into Cursor Temp1 ReadWrite
Insert Into Temp1 Select "","合计",Sum(报名人数) From Temp1
Select Temp1
Browse
收到的鲜花
  • tlliqi2014-05-20 21:42 送鲜花  20朵   附言:学习下

坚守VFP最后的阵地
2014-05-20 14:32
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:109
帖 子:2232
专家分:3913
注 册:2007-4-27
收藏
得分:4 
楼主是不是在统计浙江省的学考报名情况啊……其实调整次序是没必要的

只求每天有一丁点儿的进步就可以了
2014-05-20 14:39
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:109
帖 子:2232
专家分:3913
注 册:2007-4-27
收藏
得分:0 
我有一个学考的报名统计小工具上传在浙江容博高中学校群里

只求每天有一丁点儿的进步就可以了
2014-05-20 14:39
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
我没有此浙江容博高中学校群里 请放在此论坛上,好吗
2014-05-20 14:46
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
sdta:试一下,能实现,美中不足就是速度有点慢。
2014-05-20 15:09
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:109
帖 子:2232
专家分:3913
注 册:2007-4-27
收藏
得分:0 
回复 8 楼 sylknb
你告诉邮箱,我发给你

[ 本帖最后由 wengjl 于 2014-5-20 16:00 编辑 ]

只求每天有一丁点儿的进步就可以了
2014-05-20 15:24
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
以下是引用wengjl在2014-5-20 15:24:09的发言:

你告诉邮箱,我发给你
sylkn4@ 谢谢了
2014-05-20 16:34
快速回复:如何在一个表中寻找出某个字段中的记录它们的长度相同但内容不同
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027912 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved