设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: kent_73
打印 上一主题 下一主题

[查询] 按条件提取不重复值

[复制链接]
11#
发表于 2012-9-17 17:04:13 | 只看该作者
kent_73 发表于 2012-9-17 16:12
ID为10和11的,不包含ID字段的情况下,按收到类别来区分的话,重复了

你自己的数据都没有好好看看
就算去掉id,
表id一样18的,数量,日期也不一样!
12#
 楼主| 发表于 2012-9-18 08:33:05 | 只看该作者
Henry D. Sy 发表于 2012-9-17 17:04
你自己的数据都没有好好看看
就算去掉id,
表id一样18的,数量,日期也不一样!

谢谢版主这么耐心的解答
可能我还是没有表述清楚

表中字段,如果表头ID、表体ID、发出指示ID、收货数量、付款情况、付款人、付款日等相同的数据可能有二条的,需要按照字段收到类别进行区分,即收到类别有二条的,只取字段值为1的;如果仅有一条(收到类别字段的值可能是1或者2),那么只需要取该条数据。

再做了一个正确的,请斑竹帮助看看。
查询中,ID=10的数据过滤了,因为它和ID=11的,按照上述输出内容,已经重复且收到类别=2,所以需要排除。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
13#
发表于 2012-9-18 19:17:16 | 只看该作者
没看懂,第10条和第11条的收货日期都不一样,凭什么认为是重复值呢?多条件剔除重复值一般建议如下:
a、导出到Excel,用数据透视表或者Countif函数处理完毕后再导入(当然,应该删除原先数据后再执行这一步)。
b、用DCount,列出。Dcount("字段","表","表头ID="&[表头ID]&" and 表体ID="&[表体ID]&"and ID<="[ID])。注意事项如下:

1、这里只列出三个条件(需要更多的条件,请根据实际设置)。其中受限条件为前面两个,即如果“表头ID”和“表体ID”都相同的话,则视为同一条记录。字段“ID”则为自动编号字段(这是必须的)。
2、计算出来大于1的即为重复值(1为第一条,2为第二条,如此类推)。
3、对于数据较多的时候,DCount会受到一定的影响,运行速度会变慢。
14#
发表于 2012-9-19 08:40:29 | 只看该作者
select * from tb_外发_收到数量 where 表头ID&表体ID&发出指示ID&收货数量&付款情况&付款人&付款日 in
  (
select 表头ID&表体ID&发出指示ID&收货数量&付款情况&付款人&付款日 as UnickF from tb_外发_收到数量 group by 表头ID&表体ID&发出指示ID&收货数量&付款情况&付款人&付款日 having count(*)=1
  )

UNION ALL select * from tb_外发_收到数量 where 表头ID&表体ID&发出指示ID&收货数量&付款情况&付款人&付款日 in
  (
select 表头ID&表体ID&发出指示ID&收货数量&付款情况&付款人&付款日 as UnickF from tb_外发_收到数量 group by 表头ID&表体ID&发出指示ID&收货数量&付款情况&付款人&付款日 having count(*)=2
  ) and 收到类别='1'
15#
 楼主| 发表于 2012-9-19 08:58:04 | 只看该作者
djt 发表于 2012-9-19 08:40
select * from tb_外发_收到数量 where 表头ID&表体ID&发出指示ID&收货数量&付款情况&付款人&付款日 in
   ...

谢谢兄台
我就是要这样的结果。

{:soso_e183:}
16#
 楼主| 发表于 2012-9-19 08:58:45 | 只看该作者
roych 发表于 2012-9-18 19:17
没看懂,第10条和第11条的收货日期都不一样,凭什么认为是重复值呢?多条件剔除重复值一般建议如下:
a、导 ...

感谢版主一直关注,现在问题解决了
17#
发表于 2012-9-19 09:45:55 | 只看该作者
多用子表查询会有意想不到的效果
18#
发表于 2012-9-19 10:16:49 | 只看该作者
kent_73 发表于 2012-9-19 08:58
感谢版主一直关注,现在问题解决了

主要就根本不知道你所谓的重复记录是指那些字段,你表述了半天也没说清楚!!
明确了包括那些字段值一样的为重复记录,就好办理。有何必用子查询呢?
假设,不考虑id,收货日期,收到类别:
那么下面的分组查询就能达到你的目的!!
  1. SELECT Last(Tb_外发_收到数量.ID) AS ID之最后一条记录, Tb_外发_收到数量.表头ID, Tb_外发_收到数量.表体ID, Tb_外发_收到数量.发出指示ID, Tb_外发_收到数量.收货部门, Last(Tb_外发_收到数量.收货日期) AS 收货日期之最后一条记录, Tb_外发_收到数量.收货数量, First(Tb_外发_收到数量.收到类别) AS 收到类别之第一条记录, Tb_外发_收到数量.付款情况, Tb_外发_收到数量.付款人, Tb_外发_收到数量.付款日
  2. FROM Tb_外发_收到数量
  3. GROUP BY Tb_外发_收到数量.表头ID, Tb_外发_收到数量.表体ID, Tb_外发_收到数量.发出指示ID, Tb_外发_收到数量.收货部门, Tb_外发_收到数量.收货数量, Tb_外发_收到数量.付款情况, Tb_外发_收到数量.付款人, Tb_外发_收到数量.付款日;
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-22 20:55 , Processed in 0.113600 second(s), 30 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表