基础表的结构:
编号 子编号
类别 金额
A01
A01-01 成本 100
A01
A01-01 费用 200
A01
A01-02 成本 300
A01
A01-02 费用 400
导出表的结构:
编号 子编号 成本_金额 费用_金额
A01
A01-01 100 200
A01
A01-02 300 400
在AddCols时,应该怎么控制啊?
Dim jb As New SQLJoinTableBuilder("查询表1","基础表")
jb.C
jb.AddTable("基础表","编号","明细表","编号",JoinModeEnum.Left)
jb.AddCols("编号","子编号",******** )
jb.filter= filter
jb.Build()
[此贴子已经被作者于2023/12/20 15:43:40编辑过]
这种使用交叉统计:
http://www.foxtable.com/webhelp/topics/3285.htm
Dim b As New CrossTableBuilder("统计表1",DataTables("订单"))
b.HGroups.AddDef("编号") '添加客户列用于水平分组
b.HGroups.AddDef("子编号") '添加客户列用于水平分组
b.VGroups.AddDef("类别") '添加产品列用于垂直分组
b.Totals.AddDef("金额") '添加数量列用于统计
b.Build '生成统计表
Maintable = Tables("统计表1") '打开生成的统计表
想在Combine后的结果拼上【明细表3】中的列,有办法吗?1、将【日期列】的最大值拼到后边,2、获取到对应的【明细编号】拼接字符串。
想要的结果(主要是最后两列怎么拼上):
编号 金额 数量 最大日期 明细编号
A01 100 200 2023-10-20 101,102
A02 300 400 2021-02-01 211,222
-----------------------------------------------------
Dim b As New SQLGroupTableBuilder("统计表2","明细表")
dt1 = b.BuildDataSource()
Dim b2 As New SQLGroupTableBuilder("统计表3","明细表2")
dt2 = b2.BuildDataSource()
dt1.Combine("编号",dt2,"编号")
dt1.Show("统计表2") '显示统计结果,必须有这一句
统计表2的结果:
编号 金额 数量
A01 100 200
A02 300 400
-------------------------------------
明细表3的结构:
编号 日期 明细编号
A01 2022-10-10 101
A01 2023-10-20 102
A02 2020-01-01 211
A02 2021-02-01 222
[此贴子已经被作者于2023/12/20 16:50:24编辑过]
先生成统计表,然后遍历统计表所有行逐行处理,根据编号使用compute取最大日期,使用GetComboListString取明细编号
行比较多,遍历可能比较费时间。 能用公式解决吗?
DataTables("查询表1").DataCols.Add("最大日期",Gettype(date), " **** " )
DataTables("查询表1").DataCols.Add("明细编号",Gettype(string), " ***** " )
[此贴子已经被作者于2023/12/20 17:20:11编辑过]