以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]交叉统计后 add占比分析 提示无法找到统计表列名  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=90345)

--  作者:qwersha
--  发布时间:2016/9/10 13:27:00
--  [求助]交叉统计后 add占比分析 提示无法找到统计表列名
Dim g As New  SQLGroupTableBuilder("统计表1","订单明细表")
g.C
g.Groups.AddDef("日期",DateGroupEnum.Year,"年度")
g.Groups.AddDef("日期", "月份")
g.Totals.AddDef("编号", AggregateEnum.Count,"总票数")
g.Totals.AddExp("订单","case when 是否订购=\'已订购\' then 1 else 0 end","已订购_票数")
g.Totals.AddExp("日期","case when 是否付款=‘已付款’  then 1 else 0 end","已付款_票数")
g.VerticalTotal = True
g.SubTotal = True
g.FromServer = True
Tables("订单统计_table1").DataSource = g.BuildDataSource()
Dim nms() As String = {"已订购",“已付款”}
For Each nm As String In nms
DataTables("订单统计_table1").DataCols.Add(nm & "_占比",Gettype(Double),nm & "_票数/总票数")
  Tables("订单统计_table1").Cols(nm & "_占比").Move(Tables("订单统计_table1").Cols(nm & "_票数").Index + 1)
Next

请教一下,上面的代码问题在哪里。。添加列“占比”的时候  nm & "_票数/总票数" , 系统提示说 找不到 已订购_票数,和已付款_票数,无法统计占比。
[此贴子已经被作者于2016/9/10 13:43:16编辑过]

--  作者:qwersha
--  发布时间:2016/9/10 13:28:00
--  
第二行是 数据源名称,复制出来发帖就自动没了~~
--  作者:有点蓝
--  发布时间:2016/9/10 14:16:00
--  
到命令窗口执行一下代码,看生成的统计表的表结构真正的列名是什么

Dim g As New  SQLGroupTableBuilder("统计表1","订单明细表")
g.C
g.Groups.AddDef("日期",DateGroupEnum.Year,"年度")
g.Groups.AddDef("日期", "月份")
g.Totals.AddDef("编号", AggregateEnum.Count,"总票数")
g.Totals.AddExp("订单","case when 是否订购=\'已订购\' then 1 else 0 end","已订购_票数")
g.Totals.AddExp("日期","case when 是否付款=\'已付款\'  then 1 else 0 end","已付款_票数")
g.VerticalTotal = True
g.SubTotal = True
g.FromServer = True
g.Build

--  作者:qwersha
--  发布时间:2016/9/10 14:30:00
--  
老师好,。~~确实显示的就是 已订购_票数。双层结构的。。。我又新建了一个项目。同样的还是这个错误。
--  作者:qwersha
--  发布时间:2016/9/10 14:33:00
--  
我把Tables("订单统计_table1").Cols(nm & "_占比").Move(Tables("订单统计_table1").Cols(nm & "_票数").Index + 1) 这个代码注释了。占比列生成了但是没有数据。我把占比列手工拖到_票数列,2列都可以合并到一起成双层结构的表头。理论上应该名字也是一样的。
--  作者:有点蓝
--  发布时间:2016/9/10 14:36:00
--  
截图看看统计表的表结构
--  作者:qwersha
--  发布时间:2016/9/10 14:40:00
--  
………………我研究下怎么上次图片的……
--  作者:有点蓝
--  发布时间:2016/9/10 14:41:00
--  
http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=78
一次不行,多传几次

--  作者:qwersha
--  发布时间:2016/9/10 14:54:00
--  
…………浏览器上传不了。打开表属性看到了。。。找到问题了。列名不是“已订购_票数”
g.Totals.AddExp("订单","case when 是否订购=\'已订购\' then 1 else 0 end","已订购_票数")
而是统计列的名字。。比如上面的代码:生成的列是 “订单”,列标题 是“已订购_票数”。。
老师,是否有办法解决?

--  作者:qwersha
--  发布时间:2016/9/10 14:57:00
--  
可以了。。。g.Totals.AddExp("订单","case when 是否订购=\'已订购\' then 1 else 0 end","已订购_票数")
这个换成g.Totals.AddExp("已订购_票数","case when 是否订购=\'已订购\' then 1 else 0 end","已订购_票数")
感谢老师提醒看看表结构啊~~
万分感谢~~
[此贴子已经被作者于2016/9/10 15:03:04编辑过]