以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请教老师关于统计的问题,谢谢  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=186020)

--  作者:xiaofei_00
--  发布时间:2023/4/1 9:52:00
--  请教老师关于统计的问题,谢谢
Dim b As New SQLGroupTableBuilder("统计表1" ,"ACCxmdjb")
b.C
b.AddTable("ACCxmdjb","ygxm","ACCygdjb","ygxm")
b.Groups.AddDef("{ACCygdjb}.sszy","专业")
b.Groups.AddDef("{ACCygdjb}.ygxm","员工姓名")
b.Totals.Addexp("sygxs","[gxs] - [ychx] - [echx] - [schx] - [sichx] - [wchx]","待完成工时")
b.filter = "sfsjwj = False And chqx = False"
b.Build
MainTable=Tables("统计表1")
Tables("统计表1").Sort = "专业,sygxs"

我上边的代码是为了统计出 b.filter = "sfsjwj = False And chqx = False"  这两列都没选中的行的“sygxs” 的和,但是有一个问题就是有些人的数据这两列 "sfsjwj 、“ chqx” 是都选中的,这时他的统计数据应该是零,但是统计表中把这样的数据直接剔除了,没有他们的数据,请问老师怎么修改代码才能把这部分统计结果是零的人也显示出来?
[此贴子已经被作者于2023/4/1 9:53:04编辑过]

--  作者:有点蓝
--  发布时间:2023/4/1 10:04:00
--  
Dim b As New SQLGroupTableBuilder("统计表1" ,"ACCxmdjb")
b.C
b.AddTable("ACCxmdjb","ygxm","ACCygdjb","ygxm")
b.Groups.AddDef("{ACCygdjb}.sszy","专业")
b.Groups.AddDef("{ACCygdjb}.ygxm","员工姓名")
b.Totals.Addexp("sygxs","IIF(sfsjwj = False And chqx = False,[gxs] - [ychx] - [echx] - [schx] - [sichx] - [wchx],0)","待完成工时")
b.Build
MainTable=Tables("统计表1")
Tables("统计表1").Sort = "专业,sygxs"

如果是SqlServer,把IIF改为使用case when语法

--  作者:xiaofei_00
--  发布时间:2023/4/1 10:33:00
--  
谢谢老师,完美解决