Foxtable(狐表)用户栏目专家坐堂 → 类似交叉统计的统计


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

主题:类似交叉统计的统计

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


加好友 发短信
等级:幼狐 帖子:180 积分:1239 威望:0 精华:0 注册:2009/5/5 10:20:00
类似交叉统计的统计  发帖心情 Post By:2009/7/28 16:45:00 [只看该作者]

例:公司有五种产品为A、B、C、D、E
产品使用表
日期  销售人员   产品     数量
02       小李      A          1
05       小李      D          2
假如上面为产品使用表中筛选出来的两行数据
目前需要根据这两行数据生成如下表
日期 A      B       C      D       E
02   1
05                             2

问题就是如何实现这个产品的统计填入

不知道我有没有把问题说清楚呢

帮助中跨表的统计,貌似能实现,不过我不怎么懂,请教各位,谢谢大家

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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2009/7/28 18:14:00 [只看该作者]

如果没有更好的办法,就这样:  建立一个和产品使用表一样结构的空表(或用代码生成一个临时表),筛选的结果充填到这个空表中,再在这个表(被充填数据的表)上进行交叉统计..............应该ok了~  

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


加好友 发短信 一级勋章
等级:版主 帖子:1993 积分:19409 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2009/7/28 18:28:00 [只看该作者]

直接用交叉统计就可生成.


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


加好友 发短信
等级:幼狐 帖子:180 积分:1239 威望:0 精华:0 注册:2009/5/5 10:20:00
  发帖心情 Post By:2009/7/28 18:28:00 [只看该作者]

问题是交叉统计并不能生成我想要的表的结构,比如有此所统计的数据中不会五种产品都有,交叉统计表也就不会出现相对应的列,


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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2009/7/28 19:29:00 [只看该作者]

做个例子上来,包括:原始表(包含一定数据行) 和 要生成的交叉统计表的结构。。。。。。。。


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


加好友 发短信
等级:幼狐 帖子:180 积分:1239 威望:0 精华:0 注册:2009/5/5 10:20:00
  发帖心情 Post By:2009/7/28 20:41:00 [只看该作者]

由产品表生成统计表,注意一点是,产品表中并未出现过产品C,但要求统计表有这一列

另:希望统计结果是针对筛选结果也可以进行,不是针对全表数据

谢谢大家

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table

[此贴子已经被作者于2009-7-28 20:43:59编辑过]

 回到顶部
帅哥,在线噢!
狐狸爸爸
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/7/28 21:05:00 [只看该作者]

没有看懂,不过交叉统计本来就只包括筛选出来的数据嘛,为啥不用呢?

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


加好友 发短信
等级:幼狐 帖子:180 积分:1239 威望:0 精华:0 注册:2009/5/5 10:20:00
  发帖心情 Post By:2009/7/28 22:23:00 [只看该作者]

交叉统计生成的统计表,横向统计产生的列只是目前数据表中有的类型,而且列不排序,我需要的是,某产品在数据表中没有,但统计表中也要有这一列
不知道有没有表达清楚呢图片点击可在新窗口打开查看

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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2009/7/28 22:30:00 [只看该作者]

以下是引用狐狸爸爸在2009-7-28 21:05:00的发言:
没有看懂,不过交叉统计本来就只包括筛选出来的数据嘛,为啥不用呢?

楼主要在统计表中固定一些列,来达到统计的结果。也不知道筛选后会有几个产品被筛选出来的~

楼主你在“产品表”做个按钮,在你筛选完后(要排除重复内容),点击这个按钮 代码:  试一试吧
注意:与数字计算有关的列要改为整数型(或其他数字型),统计表中产品A的列名为‘A ’,列标题为‘产品A’,其他列亦同

DataTables("统计表").DataRows.Clear()
for i as Integer = 0 to tables("产品表").count -1
    Dim dr As DataRow
    dr = DataTables("统计表").AddNew()
    dr("医生") = currenttable(i,"医生")
next

MainTable = Tables("统计表")
for i as Integer = 0 to tables("统计表").count -1
    For Each cl As Col In tables("统计表").Cols
        if cl.name <> "日期" and cl.name <> "医生"
            currenttable(i,cl.name)= DataTables("产品表").Compute("Sum(数量)", "产品 = '" & cl.name & "'and 医生 = '" & currenttable(i,"医生") & "' ")
        end if
    Next
Next

[此贴子已经被作者于2009-7-28 22:32:00编辑过]

 回到顶部
帅哥,在线噢!
狐狸爸爸
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/7/28 22:31:00 [只看该作者]

哦,明白了。
没有办法的,只能先用交叉统计,然后对于那些没有出现的产品,用代码增加对应的列。

利用Add方法,可以增加临时列,并可给临时列设置表达式。
通过代码增加的临时列,在重新打开项目文件后,将不复存在。

Add方法的语法为:

Add(Name, GetType(Type))
Add(Name, GetType(Type), Expression)

参数说明:

  • Name
    新增列的名称
     
  • Type
    新增列的数据类型,需要配合GetType关键字来获得数据类型,例如GetType(String)表示字符型,GetType(Boolean)表示逻辑型。
     
  • Expression
    可选参数,指定新增列的计算表达式,请参考表达式的运算符和函数

例如:

DataTables("订单").DataCols.Add("金额", GetType(Double), "[数量] * [单价] * (1 - [折扣])")


 回到顶部
总数 11 1 2 下一页