设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 4475|回复: 8
打印 上一主题 下一主题

[查询] 关于求和计数及去重的查询

[复制链接]
跳转到指定楼层
1#
发表于 2015-11-17 20:34:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位老师们好:
       在此请教个问题,附件中左边有四列数据,需用access查询达到右边的效果。关键在于去重和计数的问题,谢谢各位了。

本帖子中包含更多资源

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

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
推荐
发表于 2015-11-18 10:34:52 | 只看该作者
本帖最后由 roych 于 2015-11-18 10:37 编辑

太复杂了:
  1. select B2.大品, B2.小品数, B2.副品数,C1.副小品数 from
  2. (SELECT A.大品, Count(A.小品) AS 小品数, B1.副品数
  3. FROM (SELECT Sheet1.大品, Sheet1.小品 FROM Sheet1 GROUP BY Sheet1.大品, Sheet1.小品)  AS A
  4. INNER JOIN
  5. (SELECT B.大品, Count(B.副品) AS 副品数 FROM (SELECT Sheet1.大品, Sheet1.副品 FROM Sheet1 GROUP BY Sheet1.大品, Sheet1.副品)  AS B GROUP BY B.大品)  AS B1
  6. ON A.大品=B1.大品

  7. GROUP BY A.大品, B1.副品数) as B2

  8. INNER JOIN
  9. (SELECT C.大品, Count(C.副小品) AS 副小品数 FROM (SELECT Sheet1.大品, Sheet1.副小品 FROM Sheet1 GROUP BY Sheet1.大品, Sheet1.副小品)  AS C GROUP BY C.大品)  AS C1
  10. ON B2.大品=C1.大品
复制代码

SQL Server里有Count Distinct,会好很多。Access没有这个功能
这还不算,还不能inner join含有3个group by的子查询。所以只能先把A跟B1合起来,再inner join C1。

本帖子中包含更多资源

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

x
回复 支持 1 反对 0

使用道具 举报

2#
 楼主| 发表于 2015-11-17 21:34:47 | 只看该作者
这个问题不能用access解决吗?

点击这里给我发消息

3#
发表于 2015-11-18 08:39:45 | 只看该作者
用代码可以实现,但用一条SQL查询语句没想好如何实现
5#
发表于 2015-11-18 16:07:53 | 只看该作者
本帖最后由 todaynew 于 2015-11-18 16:31 编辑

select a.大品,a.小品,b.副品,c.副小品 from
(select t.大品,count(t.小品) as 小品
from (select distinct 大品,小品 from tbname) as t group by t.大品) as a
inner join
(select t.大品,count(t.副品) as 副品
from (select distinct 大品,副品 from tbname) as t group by t.大品) as b
on a.大品=b.大品
inner join
(select t.大品,count(t.副小品) as 副小品
from (select distinct 大品,副小品 from tbname) as t group by t.大品) as c
on a.大品=c.大品

另:这个表设计有问题,应该设计成BOM表。目前的表实际是BOM表递归查询的结果集。实际上是可以通过BOM表做递归查询时直接计算出数量的。你给弄球反了。


6#
 楼主| 发表于 2015-11-18 17:13:44 | 只看该作者
本帖最后由 fwfewfds 于 2015-11-18 17:14 编辑

谢谢三位老师的热心解答。

7#
 楼主| 发表于 2015-11-18 17:15:17 | 只看该作者
roych 发表于 2015-11-18 10:34
太复杂了:

SQL Server里有Count Distinct,会好很多。Access没有这个功能

感谢roych老师的解答,完美运行得出答案。
8#
 楼主| 发表于 2015-11-18 17:15:40 | 只看该作者
todaynew 发表于 2015-11-18 16:07
select a.大品,a.小品,b.副品,c.副小品 from
(select t.大品,count(t.小品) as 小品
from (select disti ...

todaynew老师的解答执行有点问题,同样感谢。

点评

其实我已经在里面写出来了:不能inner join含有3个group by的子查询  发表于 2015-11-18 17:29
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-15 01:19 , Processed in 0.108870 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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