以文本方式查看主题

-  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
--  

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

请看图,在划圈的地方增加一个表达列, 用金额 除以 数量.
 
[此贴子已经被作者于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里增加表达式列,那就是先求值再汇总,结果还是产品销售价,没有意义。