交叉统计之汇总模式
在学习本课的内容之前,请打开CaseStudy目录下的示例文件"数据分析.Table"。
如果将CrossTableBuilder的Subtotal属性设置为True,那么就可以对交叉统计结果进行二次统计,生成汇总模式。
示例一
按年月统计各产品销售数量,并生成汇总模式:
Dim b As New CrossTableBuilder("统计表1",DataTables("订单"))
b.HGroups.AddDef("日期",DateGroupEnum.Year,"年") '添加日期列用于水平分组,按年分组
b.HGroups.AddDef("日期","月") '添加日期列用于水平分组,按月分组
b.VGroups.AddDef("产品","产品_{0}") '添加产品列用于垂直分组
b.Totals.AddDef("数量")
'添加数量列用于统计
b.Subtotal = True
'生成汇总模式
b.Build
'生成统计表
Maintable
= Tables("统计表1")
'打开生成的统计表
执行结果:
示例二
在默认情况下,系统会根据所有分组生成汇总模式,不过我们可以精确控制。
CrossTableBuilder有个名为SubtotalLevel的整数型属性,用于设置生成汇总模式的层数。
SubtotalLevel的默认值为-1,根据所有分组生成汇总模式;设为0,只生成总计行,设为1,根据第一个分组生成汇总模式;设为2,根据前两个分组生成汇总模式,其余类推。
例如按年月统计各产品的销售数量和金额,并生成汇总模式,但只生成总计行:
Dim b As New CrossTableBuilder("统计表1",DataTables("订单"))
b.HGroups.AddDef("日期",DateGroupEnum.Year,"年") '添加日期列用于水平分组,按年分组
b.HGroups.AddDef("日期","月") '添加日期列用于水平分组,按月分组
b.VGroups.AddDef("产品","产品_{0}") '添加产品列用于垂直分组
b.Totals.AddDef("数量") '添加数量列用于统计
b.Subtotal = True '生成汇总模式
b.SubtotalLevel = 0 '只生成总计行
b.Build '生成统计表
MainTable = Tables("统计表1") '打开生成的统计表
得到的统计结果: