标题:有关数据筛选的一个人问题
只看楼主
hm94657
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2017-7-3
结帖率:100%
已结贴  问题点数:20 回复次数:5 
有关数据筛选的一个人问题
,数据的内容大概是这样,希望问下大神们,如何筛选出第一栏里面只出现过一次的数据啊,例如113和131这样的数据啊
搜索更多相关主题的帖子: 数据 筛选 一个人 内容 出现 
2017-07-03 11:22
zqchun2000
Rank: 1
等 级:新手上路
帖 子:21
专家分:6
注 册:2017-3-26
得分:5 
SELECT bgbm FROM 表名 GROUP BY  bgbm HAVING COUNT(bgbm)=1
2017-07-03 12:33
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:15 
由于你要 Bgbm 字段内容只出现1次的,你可以这样
1、
select a.* from 你表 a,(select Bgbm from 你表 group by Bgbm having count(Bgbm)=1)b where a.Bgbm=b.Bgbm
2、
select Bgbm,max(报告类型) as 报告类型,max(报告单位) as 报告单位 from 你表 group by Bgbm having count(Bgbm)=1

同样,你查询出现次数大于1的。可以这样
select a.* from 你表 a,(select Bgbm from 你表 group by Bgbm having count(Bgbm)>1)b where a.Bgbm=b.Bgbm

但,就不能这样
select Bgbm,max(报告类型) as 报告类型,max(报告单位) as 报告单位 from 你表 group by Bgbm having count(Bgbm)>1



2017-07-03 12:44
hm94657
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2017-7-3
得分:0 
回复 3楼 mywisdom88
你好,我编这个命令select a.* from 你表 a,(select Bgbm from 你表 group by Bgbm having count(Bgbm)=1)b where a.Bgbm=b.Bgbm时显示的是语法错误,不知道是怎么回事。。。
那像这样列数较多时,如何筛选出第一栏里面只出现过一次的数据呢,麻烦大神再指导一下
2017-07-30 17:50
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
可能是版本问题,VFP6与VFP9 SQL命令的用法是不一样的
如果是VFP9可用SYS(3099,70)加在SQL命令之前

坚守VFP最后的阵地
2017-07-30 19:49
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
得分:0 
以下是引用hm94657在2017-7-30 17:50:17的发言:

你好,我编这个命令select a.* from 你表 a,(select Bgbm from 你表 group by Bgbm having count(Bgbm)=1)b where a.Bgbm=b.Bgbm时显示的是语法错误,不知道是怎么回事。。。那像这样列数较多时,如何筛选出第一栏里面只出现过一次的数据呢,麻烦大神再指导一下

如果是VFP9.0,思路是这样的:

第一步,先用SELECT-SQL语句挑出Bgbm是唯一值的记录
SELECT Bgbm,COUNT(Bgbm) 次数 FROM 表文件名 GROUP BY Bgbm HAVING 次数=1
为什么输出项里要加上“COUNT(Bgbm) 次数”,是因为VFP9.0规定,只有在输出项里含聚合函数时才允许用GROUP BY...HAVING子句。

第二步,把第一步生成的表作为临时表,与原表进行联接查询,查询条件就是双方的Bgbm值相等。这样,就能达到你最后的要求了。根据这个思路,就有如下语句:
SELECT 不良反应结,T1.Bgbm,报告类型严,报告单位类,性别,怀疑并用,药品序号 ;
   FROM 原表文件名 T1, ;
        (SELECT Bgbm,COUNT(Bgbm) 次数 FROM 表文件名 ;
            GROUP BY Bgbm HAVING 次数=1) T2 ;
   WHERE T1.Bgbm=T2.Bgbm
第二步思路出来的语句就是能达到你最终目的的那条语句,直接使用就可以了。
2017-07-31 14:03



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-479115-1-1.html




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

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