以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  SQLGroupTableBuilder 表达式统计列 除法 的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=82900)

--  作者:fubblyc
--  发布时间:2016/3/27 11:56:00
--  SQLGroupTableBuilder 表达式统计列 除法 的问题

各位老师好,遇到这个问题:


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20160327114049.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20160327114132.png
图片点击可在新窗口打开查看

3490/4000  怎么会等于 1.8  呢?

 

原数据表:

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20160327114147.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2016/3/27 12:00:01编辑过]

--  作者:大红袍
--  发布时间:2016/3/27 13:02:00
--  

明显不能直接计算。生成以后,加入表达式列

 

DataTables().DataCols.Add("达成率", gettype(double), "iif(除数 = 0, null, 被除数/除数")


--  作者:fubblyc
--  发布时间:2016/3/27 14:10:00
--  
哦,大红袍老师,那表达式统计列不能用在这里是吗?是什么情况下可以用统计表达式列呢?

可以向Totals添加表达式统计列,语法是:

Totals.AddExp(Name, Expression)
Totals.AddExp(Name, Expression, Caption)
Totals.AddExp(Name, Expression, Aggregate)
Totals.AddExp(Name, Expression, Caption, Aggregate)

Name:      字符型,指定列名
Expression:字符型,指定表达式

Caption:   字符型,指定列标题
Aggregate: AggregateEnum枚举型,用于指定统计类型,默认是求和。

例如:

Dim b As New SQLGroupTableBuilder("统计表1","订单")
b.
Totals.AddExp("金额","数量 * 单价 * (1-折扣)")

可以看出SQLGroupTableBuilder和GroupTableBuilder的使用方法基本相似,前者只是在后者的基础上增加了:

1、可以用ConnectionName指定数据源
2、可以用AddTable方法增加多个数据表
3、可以用AddExp方法增加表达式分组列或统计列


--  作者:fubblyc
--  发布时间:2016/3/27 14:11:00
--  
Dim b As New SQLGroupTableBuilder("统计表1","日销售数据")
b.C
b.Groups.AddDef("日期", DateGroupEnum.week, "周次") \'根据日期按年分组
b.Totals.AddDef("日销售目标","周销售目标") \'对数量进行统计
b.Totals.AddDef("日销售","实际完成") \'对数量进行统计
b.Totals.AddExp("与目标差额","日销售目标 - 日销售")       这个结果是对的。

--  作者:大红袍
--  发布时间:2016/3/27 14:14:00
--  

 汗,能一样吗?Toals就是把每一行的结果累加。

 

 看2楼,加表达式。


--  作者:fubblyc
--  发布时间:2016/3/27 14:19:00
--  
恩恩。加表达式是可以了。谢谢 大红袍老师。

就是有个疑问,那这个的意思是。。。。表达式统计列。。。

可以向Totals添加表达式统计列,语法是:

Totals.AddExp(Name, Expression)
Totals.AddExp(Name, Expression, Caption)
Totals.AddExp(Name, Expression, Aggregate)
Totals.AddExp(Name, Expression, Caption, Aggregate)

Name:      字符型,指定列名
Expression:字符型,指定表达式

Caption:   字符型,指定列标题
Aggregate: AggregateEnum枚举型,用于指定统计类型,默认是求和。

例如:

Dim b As New SQLGroupTableBuilder("统计表1","订单")
b.
Totals.AddExp("金额","数量 * 单价 * (1-折扣)")   ??

可以看出SQLGroupTableBuilder和GroupTableBuilder的使用方法基本相似,前者只是在后者的基础上增加了:

1、可以用ConnectionName指定数据源
2、可以用AddTable方法增加多个数据表
3、可以用AddExp方法增加表达式分组列或统计列


--  作者:大红袍
--  发布时间:2016/3/27 14:26:00
--  

 你可以理解 b.Totals.AddExp 就是每一行结果的 合计。


--  作者:fubblyc
--  发布时间:2016/3/27 14:28:00
--  
哦。是先表达式计算再每一行的合计。明白了。谢谢 大红袍 老师。