以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  怎么用分组统计不重复的行个数  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=119512)

--  作者:yiningyl
--  发布时间:2018/5/26 2:07:00
--  怎么用分组统计不重复的行个数
各位,我要统计各班学生中有多少个不同民族,多少种不同政治面貌。。。用下面的统计代码,只能统计总的个数,不能去除掉重复的,怎么写才可以分组统计不重复的?

Dim g As New GroupTableBuilder("统计表", DataTables("tjb"))
g.Caption = "统计表"
g.Groups.AddDef("grade")
g.Groups.AddDef("class")
g.Totals.AddDef("zb", AggregateEnum.Count, "民族个数")
g.Totals.AddDef("zzmm", AggregateEnum.Count, "政治面貌种类数")
....

g.VerticalTotal = True
g.SubTotal = True
g.Decimals = 0
g.FromServer = True
g.Build()

--  作者:有点蓝
--  发布时间:2018/5/26 9:24:00
--  
试试

Dim g As New GroupTableBuilder("统计表", DataTables("tjb"))
g.Caption = "统计表"
g.Groups.AddDef("grade")
g.Groups.AddDef("class")
g.FromServer = True
g.SubTotal = True
g.Build()

Dim t As Table = Tables("统计表")
Dim dt As DataTable = t.DataTable
dt.DataCols.Add("民族个数",Gettype(Integer) )
dt.DataCols.Add("政治面貌种类数",Gettype(Integer) )
dt.DataCols.Add("合计",Gettype(Integer) ,"民族个数 * 政治面貌种类数")

For Each dr As DataRow In dt.DataRows
    dr("民族个数") = dt.SQLGetValues("zb","grade=\'" & dr("grade") & "\' And class=\'" & dr("class") & "\'")
    dr("治面貌种类数") = dt.SQLGetValues("zzmm","grade=\'" & dr("grade") & "\' And class=\'" & dr("class") & "\'")
Next


--  作者:yiningyl
--  发布时间:2018/5/26 11:19:00
--  
老师,用你的方法试过了,说找不到 zb 和zzmm列 ,还报错说临时表中不能使用sqlgetvalues (这个可以改成getvalues),找不到列的错误怎么改啊, 前面我用分组统计生成的临时表”统计表"中确实是没有zb ,zzmm这些列的啊
[此贴子已经被作者于2018/5/26 11:24:50编辑过]

--  作者:有点蓝
--  发布时间:2018/5/26 11:42:00
--  
For Each dr As DataRow In dt.DataRows
    dr("民族个数") = DataTables("tjb").SQLGetValues("zb","grade=\'" & dr("grade") & "\' And class=\'" & dr("class") & "\'")
    dr("治面貌种类数") = DataTables("tjb").SQLGetValues("zzmm","grade=\'" & dr("grade") & "\' And class=\'" & dr("class") & "\'")
Next