以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]统计表新增列的表达式  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=151503)

--  作者:天一生水
--  发布时间:2020/6/25 13:31:00
--  [求助]统计表新增列的表达式

老师好!

如图,我在统计表新增一列[平均值]用作比对,取值为[农历月]、[星期]均相同的[000005_*]的平均值。

Add(ColumnName, GetType(Type), MaxLength, Expression, Caption)

这个Expression 表达式怎样写?


此主题相关图片如下:截屏图片 (2).jpg
按此在新窗口浏览图片 

 

Dim b As New sqlCrossTableBuilder("统计表1","日历表")
b.AddTable("日历表","阳历日期","数据表","日期")
b.HGroups.AddDef("农历月") \'添加客户列用于水平分组
b.HGroups.AddDef("星期") \'添加客户列用于水平分组
b.HGroups.AddDef("阳历日期",DateGroupEnum.none) \'添加列用于水平分组

b.VGroups.AddDef("代码") \'添加列用于垂直分组
b.VGroups.AddDef("名称") \'添加列用于垂直分组
b.Totals.AddDef("涨跌幅") \'添加数量列用于统计
b.Build \'生成统计表
\'MainTable = Tables("统计表1") \'打开生成的统计表


Tables("统计分析_Table1").DataSource = b.BuildDataSource()

Tables("统计分析_Table1").DataTable.DataCols.Add("平均值", Gettype(Double))



--  作者:有点蓝
--  发布时间:2020/6/27 8:59:00
--  
表达式做不了,只能使用代码计算

Dim b As New sqlCrossTableBuilder("统计表1","日历表")
b.AddTable("日历表","阳历日期","数据表","日期")
b.HGroups.AddDef("农历月") \'添加客户列用于水平分组
b.HGroups.AddDef("星期") \'添加客户列用于水平分组
b.HGroups.AddDef("阳历日期",DateGroupEnum.none) \'添加列用于水平分组

b.VGroups.AddDef("代码") \'添加列用于垂直分组
b.VGroups.AddDef("名称") \'添加列用于垂直分组
b.Totals.AddDef("涨跌幅") \'添加数量列用于统计
b.Totals.AddExp()

Tables("统计分析_Table1").DataSource = b.BuildDataSource()
Tables("统计分析_Table1").DataTable.DataCols.Add("平均值", Gettype(Double))
For Each s() As String = Tables("统计分析_Table1").DataTable.GetValues("农历月|星期")
    Dim cnt As Double = Tables("统计分析_Table1").DataTable.compute("Avg([000005_*])","农历月=\'" & s(0) & "星期\' and  = \'" & s(1) & "\'")
    Tables("统计分析_Table1").DataTable.ReplaceFor("平均值",cnt,"农历月=\'" & s(0) & "星期\' and  = \'" & s(1) & "\'")
Next