Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

看看这个查询该怎么做

asteriod  发表于:2010-02-11 21:31:34  
复制

把我的问题再更清楚的表述一下:
问题:
有一个ACCESS数据库,库中的基本结构如下表
地区编码(Rid) 姓名(name 性别(sex) 年龄(age) 登记日期(date) 登记编码
11010206 张三   男           12         2009-11-2        R10
11010206 李四   男           15         2009-10-2          R11
11010206 王五   女           19           2007-08-07      A98
11010206 赵六   女           78           1999-1-3        C11
11010207 刘八   男           22           1970-1-4        S11
11010207 赵四   女            45           1970-5-5        S12


要进行数据库的查重操作(计算机初步筛选可以重复,再人工复查),要把重复记录用一个sql筛选出来,重复记录的定义为:
地区编码相同  并且 姓名相同(姓名相同定义为姓名完全一样或相差一个字)并且 性别、登记编码、年龄、登记时间这些变量中任2个相同(年龄相差10岁、登记时间相差6个月就认为相同)

举个例子:
下面这两条记录,乡镇编码相同 且 姓名相同(差一个字认为相同) 且 性别和年龄相同 (年龄差三岁)
地区编码(Rid) 姓名(name) 性别(sex) 年龄(age) 登记日期(date) 登记编码
11010206 张三 男 12 2009-11-2 R10
11010206 张三丰 男 15 2002-10-2 R11
另外,ACCESS自定义函数的话,在SQL里能调用吗?

 

Top
蒋元根 发表于:2010-02-12 18:13:46
asteriod 发表于:2010-02-12 20:23:36

非常感谢!祝来年发大财!行大运!
明确下,姓名相同的定义是:
(1)  姓名按不超过三个字符,最多三个汉字;
(2)姓名的第一个字,即姓必须相同;
(3)第二和第三个字有一个相同,或全部相同;

您做的这个好像,任何记录都能给筛选出来,另外(年龄相差10岁、登记时间相差6个月就认为相同); 好像没考虑!谢谢!



蒋元根 发表于:2010-02-12 21:43:28
修改了,供参考点击下载此附件

asteriod 发表于:2010-02-15 17:21:44

版主做的非常好,虎年吉祥!非常感谢!但还是有一点,可能对我的条件理解有偏差:
(1)地区编码相同这个条件是必须的,您做的很好!;
(2)姓名的条件也是必须成立的,您做的很好!
(3)第三个条件是:性别、登记编码、年龄、登记日期中两个及两个以上条件成立,才筛选出来;
条件1 条件2 和条件3 是“和”的关系,只有条件1 和条件2成立时,不要筛选出来,只有条件1、2、3同时成立
时才筛选出来。您做的这个,条件3不成立的时候也筛选出来了。另外,条件3中任意两个及两个以上成立这个没有体现。
如有一条新纪录:
ID 地区编码         姓名 性别 年龄 登记日期        登记编码
8 11010206 张三四 男 99 1900-10-02 a99

这个记录只有条件1和条件2和目前的记录重复,但条件3不成立(后四个变量中,只性别成立,不够两个) 不应该筛选出来!
再次感谢楼上的,祝春节愉快!



蒋元根 发表于:2010-02-16 05:32:13
修改了一下,供参考点击下载此附件

总记录:5篇  页次:1/1 9 1 :