| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1879 人关注过本帖
标题:表中只有某二列相同(报名序号,姓名工)其它都不相同的重复记录,我想把只 ...
取消只看楼主 加入收藏
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
结帖率:79.38%
收藏
已结贴  问题点数:20 回复次数:9 
表中只有某二列相同(报名序号,姓名工)其它都不相同的重复记录,我想把只取一条记录,能用select DISTINCT子句?
FoxPro入门手册(2014第四次修订水印版)中:select 语句中对重复行的介绍:
重复行,是指所有结果列的值都完全相同的行, 只要有一列的值不同, 就不算重复行。

现有表中报名序号,姓名相同的,其它几列不同的重复记录,
如 51016001 张三 90 80  70
   51016001  张三 100 90 50
1)现我只想取一条记录来统计报名人数,能否用 select distinct bmxh,xm from xx?
2)此条:SELECT bmd,COUNT(*) FROM (select DISTINCT bmxh,bmd FROM xk) GROUP BY bmd 为什么是语法错误?
 我先取掉重复后的表为中间表,然后再对中间表进分组统计.
 改为如下是正确的
select DISTINCT bmxh,bmd FROM xk into table ls1
select bmd,count(*) from ls1 group by bmd
当然select bmd,count(distinct bmxh) from xk group by bmd 是书上介绍的

[ 本帖最后由 sylknb 于 2015-9-24 11:10 编辑 ]
2015-09-24 10:28
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
SELECT bmd,COUNT(*) FROM (select DISTINCT bmxh,bmd FROM [xk$]) GROUP BY bmd 此条语句在excel 2003中 oledb 查询中能正确运行。为什么在VFP9中
SELECT bmd,COUNT(*) FROM (select DISTINCT bmxh,bmd FROM xk) GROUP BY bmd 不能运行?
2015-09-24 11:12
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
vfp9帮助文件:
在 FROM 子句中的子-SELECT

一个子-SELECT 常常引用到做为一个衍生数据表。衍生数据表是引用一个别名或用户指定名称在 FROM 子句中的 SELECT 语句。在 FROM 子句中的 SELECT 的结果集通过使用外部 SELECT 语句来建立一个数据表。Visual FoxPro 9.0 提供了在一个 FROM 子句中使用子查询。

一个子-SELECT 应该被包含在括号中而且需要一个别名。不支持相互关联。一个子-SELECT 与 SELECT 命令有相同的语法限制,但子查询就没有此语法限制。在最上层 SELECT 计算之前会执行所有的子-SELECT。

下面是在 FROM 子句中子查询的一般语法。

SELECT … FROM (SELECT …) [AS] Alias…
根据上述
SELECT bmd,COUNT(*) FROM (select DISTINCT bmxh,bmd FROM xk
) GROUP BY bmd 
括号内不是子查询吗?主查询的表来自从子查询结果的表,为什么不行?

2015-09-25 08:41
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
以下是引用kinvanhon在2015-9-25 08:45:45的发言:

一个子-SELECT 应该被包含在括号中而且需要一个别名
看清楚你的别名在哪里
现加了,是不是这样?如何理介?
SELECT bmd,COUNT(*) FROM (select DISTINCT bmxh,bmd FROM xk) as a GROUP BY bmd
2015-09-25 08:56
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
运行此句  use &yskm 提示错误
没有出现:在字段列表中按顺序选择你要的字段组合(如你要的人员编号、姓名)的列表,一闪而过。lszlpxk1.DBF中是空内容

[ 本帖最后由 sylknb 于 2015-9-25 12:50 编辑 ]
2015-09-25 12:41
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
我在D:\,
是数据表(dbf)还是数据库?
2015-09-25 16:16
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
我试了一下,成了,但在附加条件中如何输入要求?例如1个人报了多名课,则有重复的报名号,在统计人数中只要统计人数,不要统计课次,哪附加条件如何输入?

[ 本帖最后由 sylknb 于 2015-9-25 16:30 编辑 ]
2015-09-25 16:28
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
我的意思多个相同的报名序号只取一个,只想统计有多少人报名(也就去掉重复),不想统计报多少课次
bmxh     xm     km
51016001 张三    语文
51016001 张三    数学
51016002 李四    语文
51016002 李四    物理
51016002 李四   化学
。。。。

[ 本帖最后由 sylknb 于 2015-9-25 16:51 编辑 ]
2015-09-25 16:49
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
以下是引用沙枣在2015-9-25 16:52:09的发言:

就用bmxh进行分类统计,统计结果库里有多少条记录,就是多少个人报名。(如果最后一条记录是说明统计范围的记录则除外)
实际不是这样的例如:
多个相同的报名序号只取一个,只想统计有多少人报名(也就去掉重复),不想统计报多少课次
bmxh     xm     km
51016001 张三    语文
51016001 张三    数学
51016002 李四    语文
51016002 李四    物理
51016002 李四   化学
。。。。

报名人数只有二个人报名,报名人次有分别为2人次,3人次
2015-09-25 18:42
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
以下是引用wangzhiyi在2015-9-26 01:08:11的发言:

 
inde on allt(bmxh)+allt(xm) to xhxm uniq
count to zrs
? "报名总人数为:"+ALLT(STR(ZRS))
仅为你这贴子目的而写。
谢谢,但我的意思是你的程序中无法使用我的要求。我的建议在附加条件中可以输入各人的要求的代码并以此作为统计条件来统计。

[ 本帖最后由 sylknb 于 2015-9-26 17:52 编辑 ]
2015-09-26 17:48
快速回复:表中只有某二列相同(报名序号,姓名工)其它都不相同的重复记录,我想 ...
数据加载中...
 
   



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

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