Foxtable(狐表)用户栏目专家坐堂 → [求助]如何将表统计成这样的交叉表并汇总呢?


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

主题:[求助]如何将表统计成这样的交叉表并汇总呢?

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/18 11:26:00 [显示全部帖子]

 垂直分组,控制成 日期。

 

 统计那里,稍微处理一下就行了。 日期获取最大值、加油量获取累加值


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/18 12:01:00 [显示全部帖子]

代码如下

 

Dim g As New SqlCrossTableBuilder("统计表1", "加油申请表")
g.HGroups.AddDef("车型","车型1_车型")
g.HGroups.AddDef("牌照号", "拍照号_牌照号")
g.VGroups.AddDef("日期", DateGroupEnum.None)
g.Totals.AddDef("日期", AggregateEnum.max, "日期")
g.Totals.AddDef("数量", "数量")
g.HorizontalTotal = True
g.Build()
Dim t As Table = Tables("统计表1")
t.grid.Rows(0).Height = 0
MainTable = t


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/18 12:20:00 [显示全部帖子]

Dim sdt As DataTable = DataTables("加油申请表")
Dim max As Integer = 0
For Each ary() As String In sdt.GetValues("车型|牌照号")
    Dim c As Integer = sdt.Compute("count(车型)", "车型 = '" & ary(0) & "' and 牌照号 = '" & ary(1) & "'")
    If c > max Then max = c
Next

Dim dtb As New DataTableBuilder("交叉表")
dtb.AddDef("车型", Gettype(String), 32)
dtb.AddDef("牌照号", Gettype(String), 32)
For i As Integer = 1 To max
    dtb.AddDef("日期" & i, Gettype(Date),"","日期")
    dtb.AddDef("数量" & i, Gettype(Double),"","数量")
Next
dtb.Build()

Dim dt As DataTable = DataTables("交叉表")
For Each ary() As String In sdt.GetValues("车型|牌照号")
    Dim idx As Integer = 1
    Dim ndr As DataRow = dt.AddNew
    ndr("车型") = ary(0)
    ndr("牌照号") = ary(1)
    For Each dr As DataRow In sdt.Select("车型 = '" & ary(0) & "' and 牌照号 = '" & ary(1) & "'")
        ndr("日期" & idx) = dr("日期")
        ndr("数量" & idx) = dr("数量")
        idx += 1
    Next
Next


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/18 12:27:00 [显示全部帖子]

1、看7楼;

 

2、要用sqlCrossTableBuilder


 回到顶部