设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 3158|回复: 11
打印 上一主题 下一主题

[查询] 如何实现查询结果的逐项累加?Henry D. Sy,ACMAIN_CHM 两位高手已解决!

[复制链接]
跳转到指定楼层
1#
发表于 2009-2-24 23:24:54 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 mybreeze 于 2009-2-25 23:14 编辑

小弟目前在工作中遇到一个难题,上来请教各位高手们帮我解惑!

有这么一张表
序号不合格项目数量
1外观45
2功能63
3功能25
4外观34
5外观7
6外观6
7安全58
8功能5
9安全76
10功能8
11轻微1


经过分类查询之后,结果如下:
不合格项目quantityratio
安全13440.85%
功能10130.79%
外观9228.05%
轻微10.30%


但是我的老板提出了一个很变态的要求,即要求对分类的结果要求能够自动逐项累加。老板要求的自动查询结果如下:
不合格项目quantityadd upratio
安全13413440.85%
功能10123571.64%
外观9232799.70%
轻微1328100%


我实在是没有办法实现上面这个结果,请教各位大大啦!

本帖子中包含更多资源

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

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
12#
 楼主| 发表于 2009-2-25 23:10:18 | 只看该作者
如果能够直接用SQL来实现,在效率差不多的情况下一般是应该选择由SQL查询来完成。

select a.不合格项目,a.qty,sum(b.qty) as addup,sum(b.qty)/c.qty as ratio
from (select 不合格项目,sum(数量) as qty from s ...
ACMAIN_CHM 发表于 2009-2-25 08:48



这位大大的查询写的真是牛!可是我理解能力有限,没有看懂那句inner join

查询a和查询b都定义成一样的,然后on后面的条件竟然让查询b变成了我要的逐项累加,实在是不可思议!

大大能帮我解一下惑么?有了解答但是看不懂可真难受!
11#
发表于 2009-2-25 11:03:08 | 只看该作者
例子收藏先
10#
发表于 2009-2-25 08:52:15 | 只看该作者
是这样的,我是从事质保工作的,在我们的质量工具里面有一个柏拉图的概念,即做图找出占80%的重大影响因素,余下的占缺陷20%的次要因素可以暂不解决,重点解决影响质量问题的主要因素

所以才需要用到累加百分 ...
mybreeze 发表于 2009-2-25 00:17


学习了,看来本人知识面太狭窄了!
9#
发表于 2009-2-25 08:48:15 | 只看该作者
如果能够直接用SQL来实现,在效率差不多的情况下一般是应该选择由SQL查询来完成。

select a.不合格项目,a.qty,sum(b.qty) as addup,sum(b.qty)/c.qty as ratio
from (select 不合格项目,sum(数量) as qty from sheet1 group by 不合格项目) a
   inner join (select 不合格项目,sum(数量) as qty from sheet1 group by 不合格项目) b
   on (a.qty<b.qty or (a.qty=b.qty and a.不合格项目<=b.不合格项目))
,(select sum(数量) as qty from sheet1) c
group by a.不合格项目,a.qty,c.qty
order by a.qty desc






******************
*  一切皆有可能  *
******************

.
ACMAIN - Access论坛回贴准则(个人).
.

.
QQ群 48866293 / 12035577 / 7440532 / 13666209
http://forum.csdn.net/BList/OtherDatabase .
http://www.accessbbs.cn/bbs/index.php .
http://www.accessoft.com/bbs/index.asp .
http://www.access-programmers.co.uk/forums .
http://www.office-cn.net .
.
http://www.office-cn.net/home/space.php?uid=141646 .
8#
发表于 2009-2-25 08:46:29 | 只看该作者
受教了!
7#
 楼主| 发表于 2009-2-25 00:26:45 | 只看该作者
感谢斑竹这么快就给出了解决方案!受教了!
6#
发表于 2009-2-25 00:18:07 | 只看该作者
  1. Public Function gSum(Qty As Long) As Long
  2.     Dim rs As New ADODB.Recordset
  3.     Dim strSQL As String
  4.     Dim tempQty As Long
  5.     strSQL = "select quantity from f where quantity>=" & Qty & " order by quantity "
  6.     rs.Open strSQL, CurrentProject.Connection, adOpenKeyset, adLockReadOnly
  7.     Do While Not rs.EOF
  8.         tempQty = tempQty + rs.Fields(0)
  9.         rs.MoveNext
  10.     Loop
  11.     gSum = tempQty
  12.     rs.Close
  13.     Set rs = Nothing
  14. End Function
复制代码

  1. SELECT F.不合格项目, F.quantity, gSum([quantity]) AS AddUP
  2. FROM F;
复制代码

本帖子中包含更多资源

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

x
5#
 楼主| 发表于 2009-2-25 00:17:58 | 只看该作者
本帖最后由 mybreeze 于 2009-2-25 00:20 编辑
1# mybreeze  


我觉得,access可以做到你的功能。但是从实际工作中,不同的不合格项目的数量相加是没有意义的,更不要说把比率也相加了。如果是金额倒是可以相加的。这可是题外话了。
ly 发表于 2009-2-25 00:10


是这样的,我是从事质保工作的,在我们的质量工具里面有一个柏拉图的概念,即做图找出占80%的重大影响因素,余下的占缺陷20%的次要因素可以暂不解决,重点解决影响质量问题的主要因素

所以才需要用到累加百分比来说明问题,占不良原因前80%的问题我们都是要立项解决的
4#
发表于 2009-2-25 00:10:57 | 只看该作者
1# mybreeze


我觉得,access可以做到你的功能。但是从实际工作中,不同的不合格项目的数量相加是没有意义的,更不要说把比率也相加了。如果是金额倒是可以相加的。这可是题外话了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-14 17:24 , Processed in 0.114042 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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