Foxtable(狐表)用户栏目专家坐堂 → SQLGroupTableBuilder 表达式统计列 除法 的问题


  共有2436人关注过本帖树形打印复制链接

主题:SQLGroupTableBuilder 表达式统计列 除法 的问题

帅哥哟,离线,有人找我吗?
fubblyc
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
SQLGroupTableBuilder 表达式统计列 除法 的问题  发帖心情 Post By:2016/3/27 11:56:00 [只看该作者]

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


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

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

3490/4000  怎么会等于 1.8  呢?

 

原数据表:

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

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

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/3/27 13:02:00 [只看该作者]

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

 

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


 回到顶部
帅哥哟,离线,有人找我吗?
fubblyc
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By: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
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By: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("与目标差额","日销售目标 - 日销售")       这个结果是对的。

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/3/27 14:14:00 [只看该作者]

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

 

 看2楼,加表达式。


 回到顶部
帅哥哟,离线,有人找我吗?
fubblyc
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By: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方法增加表达式分组列或统计列


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/3/27 14:26:00 [只看该作者]

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


 回到顶部
帅哥哟,离线,有人找我吗?
fubblyc
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2016/3/27 14:28:00 [只看该作者]

哦。是先表达式计算再每一行的合计。明白了。谢谢 大红袍 老师。



 回到顶部