以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]散乱的人员经历(交叉的起止时间和部门)如何设置汇总统计  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=81579)

--  作者:yejifenghan
--  发布时间:2016/3/1 16:05:00
--  [求助]散乱的人员经历(交叉的起止时间和部门)如何设置汇总统计
按月填的表,有:填报年月|人员编号|人员名称|项目编号|项目名称|在岗开始年月|在岗结束年月|岗位_岗位|岗位_专业|岗位_任职描述,这些数据,如何把一个人N条任职记录按项目以及岗位进行统计(由于每月填报,所以同一个人在同一个项目的起止时间有可能不同并重叠,重叠部分要合并;在一个连续时间段内,同一个人在同一个项目任不同岗位,则统计出不同岗位每条岗位一条记录),最终是统计出同一个人的任职履历,即张三11年-12年在项目A,12年-13年在项目B这个形式的数据。查看帮助好多遍,还是搞不懂分组和交叉都不行。求助。感谢!

--  作者:yejifenghan
--  发布时间:2016/3/1 16:07:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.table


--  作者:大红袍
--  发布时间:2016/3/1 16:37:00
--  
Dim dt1 As DataTable = DataTables("经历表")
Dim dt2 As DataTable = DataTables("想要的效果表")
dt2.DataRows.Clear
Dim gls As List(Of String()) = dt1.GetValues("人员编号|项目名称|岗位信息_岗位")
For Each ary As String() In gls
    Dim filter As String = "人员编号 = \'" & ary(0) & "\' and 项目名称 = \'" & ary(1) & "\' and 岗位信息_岗位 = \'" & ary(2) & "\'"
    Dim fdr As DataRow = dt1.Find(filter)
    Dim ndr As DataRow = dt2.AddNew
    ndr("人员编号") = fdr("人员编号")
    ndr("人员名称") = fdr("人员名称")
    ndr("项目名称") = fdr("项目名称")
    ndr("岗位_岗位") = fdr("岗位信息_岗位")
    ndr("岗位_专业") = fdr("岗位信息_专业")
    ndr("岗位_任职描述") = fdr("岗位信息_任职描述")
    ndr("开始年月") = dt1.Compute("min(开始年月)", filter)
    ndr("结束年月") = dt1.Compute("max(结束年月)", filter)
Next

--  作者:yejifenghan
--  发布时间:2016/3/1 16:49:00
--  感谢
谢谢大红袍老师。成了!