以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- SQLGroupTableBuilder如何筛选? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=114234) |
|||||||||||||||||||||||||||||||||||||||||||||
-- 作者:lur320 -- 发布时间:2018/2/1 11:51:00 -- SQLGroupTableBuilder如何筛选? 如下代码,红字部门是错误的。 Dim sg As New SQLGroupTableBuilder("统计表1","masterlist_cip") sg.Co nne cti sg.filter="stage=\'assigned\' or stage=\'Closed\' or stage=\'Rejected by ActionOwner\'" sg.AddTable("masterlist_cip","advisor","masterdata","name_of_user") sg.groups.AddDef("Dateofrisen",DateGroupEnum.quarter,"Quarter") sg.Groups.AddDef("dept_of_user","Dept") sg.Totals.AddDef("problem",AggregateEnum.count,"Idears") sg.Totals.AddExp("name_of_user","Case When dept_of_user = [Dept] Then dept_of_user End","Headcount",AggregateEnum.count) sg.build MainTable = Tables("统计表1") 我希望能做出如下数量,怎么做?
123的数量可能是5个人中的1个人贡献的,但是我需要的是与部门总人数进行算平均。 是否可以在SQLGroupTableBuilder一次性做出? [此贴子已经被作者于2018/2/1 11:53:29编辑过]
|
|||||||||||||||||||||||||||||||||||||||||||||
-- 作者:有点甜 -- 发布时间:2018/2/1 12:01:00 -- 不需要判断吧?直接统计人员count、平均avg即可。
如果你是需要去重复的话,那就不能直接统计了,需要生成表格以后,再计算不重复人数、平均数 |
|||||||||||||||||||||||||||||||||||||||||||||
-- 作者:lur320 -- 发布时间:2018/2/1 12:12:00 -- 不行,这样子就会在部门列筛出了发过数量的员工,而不是部门总人数。 |
|||||||||||||||||||||||||||||||||||||||||||||
-- 作者:有点甜 -- 发布时间:2018/2/1 12:14:00 -- 以下是引用lur320在2018/2/1 12:12:00的发言:
不行,这样子就会在部门列筛出了发过数量的员工,而不是部门总人数。
生成表后,循环每一行,计算不重复人数,和平均数
http://www.foxtable.com/webhelp/scr/2747.htm
|
|||||||||||||||||||||||||||||||||||||||||||||
-- 作者:lur320 -- 发布时间:2018/2/1 12:17:00 -- 这样我会做了,但是如何填入临时生成的统计表1?我找了没找到插入列的方法。 |
|||||||||||||||||||||||||||||||||||||||||||||
-- 作者:有点甜 -- 发布时间:2018/2/1 12:31:00 -- 以下是引用lur320在2018/2/1 12:17:00的发言:
这样我会做了,但是如何填入临时生成的统计表1?我找了没找到插入列的方法。
build之后生成统计表1,然后循环统计表1每一行,查找对应的部门信息值,填入
for each r as row in tables("统计表1").rows
next |
|||||||||||||||||||||||||||||||||||||||||||||
-- 作者:lur320 -- 发布时间:2018/2/1 12:42:00 -- good,先随便塞一些数据,创建2个列,然后把数据覆盖掉。 |
|||||||||||||||||||||||||||||||||||||||||||||
-- 作者:lur320 -- 发布时间:2018/2/1 12:56:00 -- 不过又有问题了,覆盖数据后,平均值的列只有0和1,估计是数据格式的问题。如何解决? 是否是由于数量列原先是count, 然后平均值是小数,只显示整数部分?
[此贴子已经被作者于2018/2/1 12:56:56编辑过]
|
|||||||||||||||||||||||||||||||||||||||||||||
-- 作者:lur320 -- 发布时间:2018/2/1 12:59:00 -- DataTables("统计表1").DataCols("Idears").SetFormat("0.00") For Each r As Row In Tables("统计表1").rows r("Idears")=CInt(r("Idears"))/CInt(r("TEMP1")) 我修改了列的格式还是不对
[此贴子已经被作者于2018/2/1 13:00:01编辑过]
|
|||||||||||||||||||||||||||||||||||||||||||||
-- 作者:lur320 -- 发布时间:2018/2/1 13:13:00 -- 搞定 Dim sg As New SQLGroupTableBuilder("统计表1","masterlist_cip") sg.Connn sg.filter="stage=\'assigned\' or stage=\'Closed\' or stage=\'Rejected by ActionOwner\'" sg.AddTable("masterlist_cip","advisor","masterdata","name_of_user") sg.groups.AddDef("Dateofrisen",DateGroupEnum.quarter,"Quarter") sg.Groups.AddDef("dept_of_user","Dept") sg.Totals.AddDef("problem",AggregateEnum.count,"Idears") sg.Totals.AddDef("dept_of_user",AggregateEnum.count,"TEMP1") sg.build MainTable = Tables("统计表1") For Each r As Row In Tables("统计表1").rows r("TEMP1")=DataTables("masterdata").Compute("count(name_of_user)","dept_of_user=\'" & r("Dept") & "\'") Next DataTables("统计表1").DataCols.Add("Avg",Gettype(Single)) For Each r As Row In Tables("统计表1").rows r("Avg")=val(r("Idears"))/val(r("TEMP1")) Next
|