以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 分组统计的问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=18974) |
-- 作者:zenqee -- 发布时间:2012/4/23 21:55:00 -- 分组统计的问题 烦请问: 分组统计生成的的临时表中,能否通过手工编码,增加一个表达式列并直接出结果?
例如:
\'定义一个GroupTableBuilder,名称为"统计表1",对订单表进行统计。
b.Groups.AddDef("产品") \'根据产品分组 b.Totals.AddDef("数量") \'对数量进行统计
(这里代码如何写:要得到一个"金额"列,是“数量列*单价列”而计算出来的) b.Build \'生成统计表 MainTable = Tables("统计表1") \'打开生成的统计表
|
-- 作者:程兴刚 -- 发布时间:2012/4/23 22:24:00 -- 表达式列与后台统计 假定订单表中的金额列是个表达式列,其表达式为:数量 * 单价 如果需要统计不同的产品销售数量和金额,通常可以这样编码: Dim g As New GroupTableBuilder("统计表1", DataTables("订单"))g.Groups.AddDef("产品") g.Totals.AddDef("数量") g.Totals.AddDef("金额") g.Build() MainTable = Tables("统计表1") 上述统计是针对已经加载的数据,如果需要统计后台数据,很多人会以为将FromServer属性设置为True即可: Dim g As New GroupTableBuilder("统计表1", DataTables("订单"))g.FromServer = True g.Groups.AddDef("产品") g.Totals.AddDef("数量") g.Totals.AddDef("金额") g.Build() MainTable = Tables("统计表1") 实际上,当我们在命令窗口执行上面的代码时,会出现错误提示,无法完成统计。 Dim b As New SQLGroupTableBuilder("统计表1","订单")b.Groups.AddDef("产品") b.Totals.AddDef("数量") b.Totals.AddExp("金额","数量 * 单价") b.Build MainTable = Tables("统计表1") 选择后台统计工具的原则是: 1、如果统计数据来自于一个表,且不需要统计表达式列,那么应该采用GroupTableBuilder或CrossTableBuilder。 |
-- 作者:zenqee -- 发布时间:2012/4/24 21:54:00 -- 回复:(zenqee)分组统计的问题 请问程老师:
前面的问题中表达式列是 金额=数量 * 单价 , 分组统计时用 b.Totals.AddExp("金额","数量 * 单价 )
1、金额 = 数量1*单价1 + 数量2*单价2 2、金额 = (数量1+数量2)* (单价1+单价2)
如果是第一种,那我要统计第二种结果(我只是举例,事实上不会这么算),也就是要先分组统计数量和单价的和再相乘,该如何编码?
谢谢! |
-- 作者:狐狸爸爸 -- 发布时间:2012/4/24 22:01:00 -- 数量1*单价1 + 数量2*单价2
如果要第二种,分别统计出数量和单价的累计值,然后用代码给统计表增加一个表达式列,表达式为: 数量 * 单价 [此贴子已经被作者于2012-4-24 22:02:41编辑过]
|