Foxtable(狐表)用户栏目专家坐堂 → 求助:在统计中增加条件


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

主题:求助:在统计中增加条件

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


加好友 发短信
等级:小狐 帖子:355 积分:4237 威望:0 精华:0 注册:2018/4/6 18:02:00
求助:在统计中增加条件  发帖心情 Post By:2019/3/27 0:48:00 [只看该作者]

各位老师:我想在统计时,在统计列时增加一个条件,但代码怎么也写不上,

 

Dim a1 As New SQLCrossTableBuilder("统计表1","制造质量管理")
Dim ta1 As DataTable
a1.C
a1.Filter = "直行辅助 Like '%检' And 日期>='" & e.form.controls("DateTimePicker6").Value & "' And 日期<='" & e.form.controls("DateTimePicker1").Value & "'"
a1.HGroups.AddDef("直行辅助")  '添加客户列用于水平分组
a1.VGroups.AddDef("日期","{0}月")  '添加日期列用于垂直分组,按月分组
a1.Totals.AddDef("状态",AggregateEnum.Count)  '         对状态列中的报工进行计数,这里能加一个条件吗?

a1.Totals.AddDef("判定",AggregateEnum.Count)  '         对判定列中的合格进行计数,这里能加一个条件吗?
a1.HorizontalTotal = True
ta1 = a1.Build() '生成一个DataTable

 

我想要的效果是:当直行辅助列包涵检时,日期在变量间,对状态列中“报工”进行计数,对判定列中的合格进行计数!

 

请老师费心,谢谢指教!


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


加好友 发短信
等级:狐神 帖子:4841 积分:35105 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2019/3/27 8:21:00 [只看该作者]

a1.Totals.AddExp("状态","iif(状态='报工',1,0)")

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


加好友 发短信
等级:小狐 帖子:355 积分:4237 威望:0 精华:0 注册:2018/4/6 18:02:00
  发帖心情 Post By:2019/3/27 11:15:00 [只看该作者]

 

谢谢,我用的是SQL Server数据源,二楼指导用不上.

 

Dim a1 As New SQLCrossTableBuilder("统计表1","制造质量管理")

Dim ta1 As DataTable

a1.C

a1.Filter = "直行辅助 Like '%检' And 日期>='" & e.form.controls("DateTimePicker6").Value & "' And 日期<='" & e.form.controls("DateTimePicker1").Value & "'"

a1.HGroups.AddDef("直行辅助")  '添加客户列用于水平分组

a1.VGroups.AddDef("日期","{0}月")  '添加日期列用于垂直分组,按月分组

a1.Totals.AddDef("状态",AggregateEnum.Count)  '         对状态列中的报工进行计数,这里能加一个条件吗?

a1.Totals.AddDef("判定",AggregateEnum.Count)  '         对判定列中的合格进行计数,这里能加一个条件吗?

a1.HorizontalTotal = True

ta1 = a1.Build() '生成一个DataTable

 

我在帮助里找到这组代码修改如下:

Dim b As New SQLGroupTableBuilder("统计表1","制造质量管理")

b.C

b.Groups.Adddef("直行辅助")

b.Totals.Addexp("状态", "Case When 直行辅助 = 总检 Then 状态 = 报工  Else 0 End")

b.Totals.Addexp("判定", "Case When 直行辅助 = 总检 Then 判定 = 合格  Else 0 End")

b.Build()

MainTable = Tables("统计表1")

 

但运行时提示如图:

 

请各位老师费心给指导一下!谢谢


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

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/3/27 11:17:00 [只看该作者]

改成比如

 

a1.Totals.AddExp("状态","case when 状态='报工' then 1 Else 0 End")


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


加好友 发短信
等级:小狐 帖子:355 积分:4237 威望:0 精华:0 注册:2018/4/6 18:02:00
  发帖心情 Post By:2019/3/27 11:49:00 [只看该作者]

谢谢老师指教!


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


加好友 发短信
等级:小狐 帖子:355 积分:4237 威望:0 精华:0 注册:2018/4/6 18:02:00
  发帖心情 Post By:2019/3/27 13:07:00 [只看该作者]

各位老师:我想在每个数据后面增加一列,得出每个月的合格率,但第三句代码不对,提示

a1.Totals.AddExp("状态","case when 状态='报工' or 状态='入库'then 1 Else 0 End")
a1.Totals.AddExp("判定","case when 判定='合格' then 1 Else 0 End")

a1.Totals.AddExp("合格率","判定/状态")    我想是:增加合格率列,算法是判定/状态,但提示如下图

 

请老师给看看!

谢谢!


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

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/3/27 13:09:00 [只看该作者]

生成统计表格以后,再动态添加表达式列

 

http://www.foxtable.com/webhelp/scr/1428.htm

 


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


加好友 发短信
等级:小狐 帖子:355 积分:4237 威望:0 精华:0 注册:2018/4/6 18:02:00
  发帖心情 Post By:2019/3/27 15:54:00 [只看该作者]

谢谢甜老师指教!


 回到顶部