Foxtable(狐表)用户栏目专家坐堂 → 如何根据两个表数据进行条件求和后并相除?


  共有15096人关注过本帖树形打印复制链接

主题:如何根据两个表数据进行条件求和后并相除?

帅哥哟,离线,有人找我吗?
风也劲
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:169 积分:3327 威望:0 精华:0 注册:2011/6/29 21:48:00
如何根据两个表数据进行条件求和后并相除?  发帖心情 Post By:2011/9/17 14:31:00 [只看该作者]

根据“投入产出”与“成本费用”两表来设计:

1.如何设计求出2010年“吨料费用”?(即:2010年费用(求和)/1102投入总用量(吨)(求和)

2.求2011年6月的费用大项中“制造费用”的吨料费用?

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:吨料耗用.rar

[此贴子已经被作者于2011-9-17 14:39:57编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
don
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12999 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2011/9/17 14:41:00 [只看该作者]

Compute

根据指定的表达式和条件进行计算,语法:

Compute(Expression, Filter)

语法:

Compute(Expression, Filter)

Expression: 要计算的表达式,使用聚合函数进行统计。
Filter:    可选参数,用于设置计算条件,请参考表达式的运算符和函数条件表达式

例如,我们要统计订单表中产品PD01的销售金额,代码如下:

Dim Sum As Double
Sum = Tables("订单").Compute("Sum(数量)", "产品 = 'PD01'")
Output.Show(Sum)

还记得吗? DataTable也有Compute方法,两者功能一样,但是DataTable的Compute方法统计所有行,而Table的Compute方法只会统计Table中可见的行。
所以如果没有进行筛选,那么两者的统计结果是一样的,如果进行了筛选,就需要根据具体情况选用了。

例如你在订单表中筛选出了客户CS01的所有行,那么:

Dim Sum1 As Double = Tables("订单").Compute("Sum(数量)")
Dim
Sum2 As Double = DataTables("订单").Compute("Sum(数量)")

Sum1将等于客户CS01的订购数量,而Sum2将等于所有客户的订购数量。

同样:

Dim Sum1 As Double = Tables("订单").Compute("Sum(数量)", "产品 = 'PD01'")
Dim
Sum2 As Double = DataTables("订单").Compute("Sum(数量)", "产品 = 'PD01'")

Sum1将等于客户CS01订购产品PD01的数量,Sum2将等于所有客户订购产品PD01的数量。


 回到顶部
帅哥哟,离线,有人找我吗?
风也劲
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:169 积分:3327 威望:0 精华:0 注册:2011/6/29 21:48:00
  发帖心情 Post By:2011/9/17 15:53:00 [只看该作者]

麻烦帮忙设置下?

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/9/18 9:45:00 [只看该作者]

我没有看懂楼主的问题。

 回到顶部
帅哥哟,离线,有人找我吗?
风也劲
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:169 积分:3327 威望:0 精华:0 注册:2011/6/29 21:48:00
  发帖心情 Post By:2011/9/18 11:11:00 [只看该作者]

例如:我想求2010年度的平均一吨料的“制造费用”,就是用2010年总 ”制造费用” 除以2010年 “总投入量”,即用“成本费用”表中“制造费用”(条件:[费用大项]='制造费用' and  年=2010),除以”投入产出“表中”项目“列”1102投入总用量(吨)“(条件:[项目]=‘1102投入总用量(吨)’,日期是2010年)。要达到目的:能统计每一项目每一时间段的吨料费用。

 回到顶部
帅哥哟,离线,有人找我吗?
程兴刚
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2011/9/18 11:23:00 [只看该作者]

您的文件无法下载,看不到投入产出表相关列名称,请修改“数量”为您要统计的投入产出表的那一列的名称,大概这样:

 

Tables("成本费用").Compute("Sum(制造费用)", "费用大项 = '制造费用' and 年 = 2010")/Tables("投入产出").Compute("Sum(数量)", "项目 = '1102投入总用量(吨)' and 日期 > #2009-12-31# and 日期 < #2011-01-01#")


 回到顶部
帅哥哟,离线,有人找我吗?
程兴刚
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2011/9/18 11:25:00 [只看该作者]

如果成本费用表的“年”列为字符型,则为这样:

 

Tables("成本费用").Compute("Sum(制造费用)", "费用大项 = '制造费用' and 年 = ‘2010’")/Tables("投入产出").Compute("Sum(数量)", "项目 = '1102投入总用量(吨)' and 日期 > #2009-12-31# and 日期 < #2011-01-01#")


 回到顶部
帅哥哟,离线,有人找我吗?
风也劲
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:169 积分:3327 威望:0 精华:0 注册:2011/6/29 21:48:00
  发帖心情 Post By:2011/9/18 12:58:00 [只看该作者]

命令窗口输入如下,能显示6655.55614497875

Dim Sum1 As Double

Dim Sum2 As Double

Dim Sum3 As Double

Sum1 = Tables("成本费用").Compute("Sum(金额)", "费用大项 = '制造费用' And 日期>=#2010-01-01# And 日期<#2011-01-01#")

Sum2 = Tables("投入产出").Compute("Sum(数据)", "项目 = '1102投入总用量()' And 日期>=#2010-01-01# And 日期<#2011-01-01#")

Sum3=Sum1/Sum2

Output.Show(Sum3)



 回到顶部
帅哥哟,离线,有人找我吗?
风也劲
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:169 积分:3327 威望:0 精华:0 注册:2011/6/29 21:48:00
  发帖心情 Post By:2011/9/18 12:59:00 [只看该作者]

但在表达式列输入:Tables("成本费用").Compute("Sum(金额)""费用大项 = '制造费用' And 日期>=#2010-01-01# And 日期<#2011-01-01#")/Tables("投入产出").Compute("Sum(数据)""项目 = '1102投入总用量()' And 日期>=#2010-01-01# And 日期<#2011-01-01#")

就出现错误提示:表达式错误,如果确认表达式无语法错误。。。。。


[此贴子已经被作者于2011-9-18 13:07:27编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
程兴刚
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2011/9/18 13:19:00 [只看该作者]

表达式列只能用表达式,不能直接用代码,请细看帮助!

 回到顶部
总数 21 1 2 3 下一页