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


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

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

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


加好友 发短信
等级:二尾狐 帖子:558 积分:5937 威望:0 精华:0 注册:2013/7/11 17:39:00
[求助]如何将表统计成这样的交叉表并汇总呢?  发帖心情 Post By:2015/5/18 11:24:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20150526112817.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20150526113447.png
图片点击可在新窗口打开查看
如何将表统计成这样的交叉表并汇总呢?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:加油申请.rar


[此贴子已经被作者于2015/5/18 11:28:54编辑过]

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


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

 垂直分组,控制成 日期。

 

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


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


加好友 发短信
等级:二尾狐 帖子:558 积分:5937 威望:0 精华:0 注册:2013/7/11 17:39:00
  发帖心情 Post By:2015/5/18 11:37:00 [只看该作者]

好像没这个效果啊


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


加好友 发短信
等级:二尾狐 帖子:558 积分:5937 威望:0 精华:0 注册:2013/7/11 17:39:00
  发帖心情 Post By:2015/5/18 11:39:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20150526114455.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20150526114620.png
图片点击可在新窗口打开查看


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | 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


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


加好友 发短信
等级:二尾狐 帖子:558 积分:5937 威望:0 精华:0 注册:2013/7/11 17:39:00
  发帖心情 Post By:2015/5/18 12:07:00 [只看该作者]

您厉害!!非常佩服,多谢您!在设置交叉统计表里是怎么设置的呢,能截个图看看吗?

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | 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


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


加好友 发短信
等级:二尾狐 帖子:558 积分:5937 威望:0 精华:0 注册:2013/7/11 17:39:00
  发帖心情 Post By:2015/5/18 12:21:00 [只看该作者]

以下是引用大红袍在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


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20150526122726.png
图片点击可在新窗口打开查看

统计列的日期列没有(AggregateEnum.max)最大值选项啊

设置后查看到的代码:

Dim g As New CrossTableBuilder("统计表2", DataTables("加油申请表"))

g.HGroups.AddDef("车型", "车型_车型")

g.HGroups.AddDef("牌照号", "牌照号_牌照号")

g.VGroups.AddDef("日期", DateGroupEnum.None)

g.Totals.AddDef("日期", AggregateEnum.Count, "日期")

g.Totals.AddDef("数量", "数量")

g.HorizontalTotal = True

g.Build()

MainTable = Tables("统计表2")



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


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

1、看7楼;

 

2、要用sqlCrossTableBuilder


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


加好友 发短信
等级:二尾狐 帖子:558 积分:5937 威望:0 精华:0 注册:2013/7/11 17:39:00
  发帖心情 Post By:2015/5/18 12:37:00 [只看该作者]

非常谢谢,慢慢来研究吧!

 回到顶部