Foxtable(狐表)用户栏目专家坐堂 → 关于SQLCrossTableBuilder表达式列的写法


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

主题:关于SQLCrossTableBuilder表达式列的写法

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


加好友 发短信
等级:六尾狐 帖子:1467 积分:11418 威望:0 精华:0 注册:2013/11/24 22:10:00
关于SQLCrossTableBuilder表达式列的写法  发帖心情 Post By:2019/10/21 20:06:00 [只看该作者]

 老师

我在进行统计的过程中,写法如下:

b.Totals.AddDef("产品数量","数量") '添加数量列用于统计
 b.Totals.AddExp("金额","产品数量 * 产品销售价")

这两个列统计结果没有问题。我现在想用这个结果组合成单价,写法如下:

b.Totals.AddExp("单价","(产品数量 * 产品销售价)/产品数量")

但为什么不能计算出正确的结果,要怎么样才能得到正确的结果?

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


加好友 发短信
等级:超级版主 帖子:106067 积分:539428 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/21 20:14:00 [只看该作者]

(产品数量 * 产品销售价)/产品数量= 产品销售价,这个是小学数学

表结构是怎么样的?数据是怎么样的?想得到什么结果?



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


加好友 发短信
等级:六尾狐 帖子:1467 积分:11418 威望:0 精华:0 注册:2013/11/24 22:10:00
  发帖心情 Post By:2019/10/21 21:31:00 [只看该作者]

 有点蓝老师

   表结构中 有产品数量 列,产品销售价 列.金额是用这两个列算出来的.交叉统计时,如果要统计某个时间段的产品数量,金额 和 价格.

目前 数量,和金额 就是我在1楼的 写法,统计没有问题. 我想用这两个去算出时间段的价格. 想加个表达式列,可以这个表达式列 写出来的不对.不是我要的算法.

我要的算法很简单,就是用 统计的 产品金额 除以 产品数量 就可以了.要怎么写?

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


加好友 发短信
等级:六尾狐 帖子:1467 积分:11418 威望:0 精华:0 注册:2013/11/24 22:10:00
  发帖心情 Post By:2019/10/21 21:45:00 [只看该作者]


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

请看图,在划圈的地方增加一个表达列, 用金额 除以 数量.
 
[此贴子已经被作者于2019/10/21 21:45:16编辑过]

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


加好友 发短信
等级:超级版主 帖子:106067 积分:539428 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/21 22:11:00 [只看该作者]

意思是要计算平均价格是吧,那就只能这样用了

去掉b.Totals.AddExp("金额","产品数量 * 产品销售价")

然后统计完成后添加表达式列,,类似

For i As Integer = Tables("统计表").cols.count - 1 To 2 Step -2
    Dim str() As String = Tables("统计表").cols(i).Caption.Split("_")
    DataTables("统计表").DataCols.Add(str(0) & "_价格",Gettype(Double), "iif(" & Tables("统计表").cols(i-1).Name & " is null,null," & Tables("统计表").cols(i).Name & "/" & Tables("统计表").cols(i-1).Name & ")")
    Tables("统计表").cols(Tables("统计表").cols.count - 1).Move(i)
Next

如果搞不定就上传实例

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


加好友 发短信
等级:六尾狐 帖子:1467 积分:11418 威望:0 精华:0 注册:2013/11/24 22:10:00
  发帖心情 Post By:2019/10/22 20:53:00 [只看该作者]

 这个方法应该可以。但不是好方法。

SQLCrossTableBuilder 不能增加表达式列吗?

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


加好友 发短信
等级:超级版主 帖子:106067 积分:539428 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/22 21:51:00 [只看该作者]

不是不能增加。而死不合适。需要是的先汇总再求平均价。如果直接SQLCrossTableBuilder里增加表达式列,那就是先求值再汇总,结果还是产品销售价,没有意义。

 回到顶部