以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]垂直表和水平表的转换 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=97203) |
-- 作者:twef -- 发布时间:2017/3/7 22:53:00 -- [求助]垂直表和水平表的转换
如何将垂直表“订单”转化成水平表“表B”?并且要求同一天同一客户同一产品实现累计功能。 |
-- 作者:有点蓝 -- 发布时间:2017/3/7 22:56:00 -- 直接做交叉统计即可:http://www.foxtable.com/webhelp/scr/0165.htm |
-- 作者:twef -- 发布时间:2017/3/7 23:02:00 -- 交叉统计是临时表,我要的不是临时表,并且考虑到以后的实际应用,可能增加一列统计“PD01+PD02"或"PD01+PD02+PD03”的数量 [此贴子已经被作者于2017/3/7 23:06:41编辑过]
|
-- 作者:有点蓝 -- 发布时间:2017/3/7 23:07:00 -- 统计后把数据填充到数据表不就行了 |
-- 作者:twef -- 发布时间:2017/3/7 23:16:00 -- 我的意思是能否通过狐表“垂直表和水平表的转换”这一节帮助文件,增加相应其他代码来实现 |
-- 作者:twef -- 发布时间:2017/3/7 23:46:00 -- Dim dtb As New DataTableBuilder("表B") dtb.AddDef("日期",Gettype(Date)) dtb.AddDef("客户",Gettype(String),10) For Each v As String In DataTables("订单").GetValues("产品") dtb.AddDef(v, Gettype(Double)) Next dtb.Build() For Each v As String() In DataTables("订单").GetValues("日期|客户") Dim dr1 As DataRow = DataTables("表B").AddNew() dr1("日期") = v(0) dr1("客户") = v(1) For Each dr2 As DataRow In DataTables ("订单").Select("日期 = \'" & v(0) & "\' And 客户 = \'" & v(1) & "\'") dr1(dr2("产品")) = dr2("数量") Next Next MainTable = Tables("表B") 请教上面代码如何修改增加“同一天同一客户同一产品实现累计功能”
|
-- 作者:有点蓝 -- 发布时间:2017/3/8 8:49:00 -- Dim dtb As New DataTableBuilder("表B") dtb.AddDef("日期",Gettype(Date)) dtb.AddDef("客户",Gettype(String),10) For Each v As String In DataTables("订单").GetValues("产品") dtb.AddDef(v, Gettype(Double)) Next dtb.Build() For Each v As String() In DataTables("订单").GetValues("日期|客户") Dim dr1 As DataRow = DataTables("表B").AddNew() dr1("日期") = v(0) dr1("客户") = v(1) Dim filter As String = "日期 = \'" & v(0) & "\' And 客户 = \'" & v(1) & "\'" For Each v1 As String In DataTables("订单").GetValues("产品",filter) dr1(v1) = DataTables("订单").Compute("Sum(数量)",filter & " and 产品=\'" & v1 & "\'") Next Next MainTable = Tables("表B") |