以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 关于SQLCrossTableBuilder表达式列的写法 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=142236) |
-- 作者:ap9709130 -- 发布时间:2019/10/21 20:06:00 -- 关于SQLCrossTableBuilder表达式列的写法 老师 我在进行统计的过程中,写法如下: b.Totals.AddDef("产品数量","数量") \'添加数量列用于统计 b.Totals.AddExp("金额","产品数量 * 产品销售价") 这两个列统计结果没有问题。我现在想用这个结果组合成单价,写法如下: b.Totals.AddExp("单价","(产品数量 * 产品销售价)/产品数量") 但为什么不能计算出正确的结果,要怎么样才能得到正确的结果?
|
-- 作者:有点蓝 -- 发布时间:2019/10/21 20:14:00 -- (产品数量 * 产品销售价)/产品数量= 产品销售价,这个是小学数学 表结构是怎么样的?数据是怎么样的?想得到什么结果?
|
-- 作者:ap9709130 -- 发布时间:2019/10/21 21:31:00 -- 有点蓝老师 表结构中 有产品数量 列,产品销售价 列.金额是用这两个列算出来的.交叉统计时,如果要统计某个时间段的产品数量,金额 和 价格. 目前 数量,和金额 就是我在1楼的 写法,统计没有问题. 我想用这两个去算出时间段的价格. 想加个表达式列,可以这个表达式列 写出来的不对.不是我要的算法. 我要的算法很简单,就是用 统计的 产品金额 除以 产品数量 就可以了.要怎么写?
|
-- 作者:ap9709130 -- 发布时间:2019/10/21 21:45:00 -- 请看图,在划圈的地方增加一个表达列, 用金额 除以 数量.
[此贴子已经被作者于2019/10/21 21:45:16编辑过]
|
-- 作者:有点蓝 -- 发布时间: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 -- 发布时间:2019/10/22 20:53:00 -- 这个方法应该可以。但不是好方法。 SQLCrossTableBuilder 不能增加表达式列吗?
|
-- 作者:有点蓝 -- 发布时间:2019/10/22 21:51:00 -- 不是不能增加。而死不合适。需要是的先汇总再求平均价。如果直接SQLCrossTableBuilder里增加表达式列,那就是先求值再汇总,结果还是产品销售价,没有意义。 |