以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  统计问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=104921)

--  作者:jackchan120925
--  发布时间:2017/8/8 15:47:00
--  统计问题
有表入附件一,表名“临时表”, 运行如下代码 Dim g As new CrossTableBuilder("统计", DataTables("临时表")) g.HGroups.AddDef("地区") g.VGroups.AddDef("sku型号") g.Totals.AddDef("运费",AggregateEnum.Min) g.build() MainTable = Tables("统计2") 可以得到名为“临时”的统计表,列出某个sku运到某个省的最低运费。 但我希望在"临时“表多加一列,能够显示出最低运费对应的快递。入附件,《目标表》所示,该如何操作呀? 谢谢
图片点击可在新窗口打开查看此主题相关图片如下:snip20170808_2.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:snip20170808_3.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:目标.jpg
图片点击可在新窗口打开查看

--  作者:有点甜
--  发布时间:2017/8/8 15:58:00
--  

要用代码生成表格。

 

Dim dtb As New DataTableBuilder("统计")
Dim dt As DataTable = DataTables("表A")
dtb.AddDef("地区", Gettype(String), 16)
Dim prds As List(of String) = dt.GetValues("型号")
For Each prd As String In prds
    dtb.AddDef(prd & "_最低运费", Gettype(Double))
    dtb.AddDef(prd & "_最低快递", Gettype(string))
Next
dtb.Build()
For Each cus As String In dt.GetValues("地区")
    Dim dr As DataRow = DataTables("统计").AddNew()
    dr("地区") = cus
    For Each prd As String In prds
        dr(prd & "_最低运费") = dt.Compute("min(费用)","地区 = \'" & cus & "\' And 型号 = \'" & prd & "\'")
        dr(prd & "_最低快递") = dt.GetComboListString("快递", "地区 = \'" & cus & "\' And 型号 = \'" & prd & "\' and 费用 = " & dr(prd & "_最低运费"))
    Next
Next
MainTable= Tables("统计")


--  作者:jackchan120925
--  发布时间:2017/8/8 16:40:00
--  
大神,最后俩句代码中为什么有"\\"这个符号?这个符号平时代码里没怎么用的好像
--  作者:jackchan120925
--  发布时间:2017/8/8 16:56:00
--  
不好意思,是打印出来的问题,打印出来有“\\”符号
--  作者:有点甜
--  发布时间:2017/8/8 17:03:00
--  
以下是引用jackchan120925在2017/8/8 16:56:00的发言:
不好意思,是打印出来的问题,打印出来有“\\”符号

 

指哪里?如果还有问题,截图说明下。


--  作者:jackchan120925
--  发布时间:2017/8/8 19:38:00
--  
已经解决,应该是我格式设置问题,非常感谢
--  作者:jackchan120925
--  发布时间:2017/8/9 12:49:00
--  
请问下,之前已将把最便宜的快递费和快递名称提取出来了,有办法把第二便宜的快递费和对应的快递名称统计出来吗?入下图所示的格式。非常感谢!
图片点击可在新窗口打开查看此主题相关图片如下:snip20170809_9.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2017/8/9 12:49:53编辑过]

--  作者:有点甜
--  发布时间:2017/8/9 15:20:00
--  
Dim dtb As New DataTableBuilder("统计")
Dim dt As DataTable = DataTables("表A")
dtb.AddDef("地区", Gettype(String), 16)
Dim prds As List(of String) = dt.GetValues("型号")
For Each prd As String In prds
    dtb.AddDef(prd & "_最低运费", Gettype(Double))
    dtb.AddDef(prd & "_最低快递", Gettype(String))
    dtb.AddDef(prd & "_次最低运费", Gettype(Double))
    dtb.AddDef(prd & "_次最低快递", Gettype(String))
Next
dtb.Build()
For Each cus As String In dt.GetValues("地区")
    Dim dr As DataRow = DataTables("统计").AddNew()
    dr("地区") = cus
    For Each prd As String In prds
        dr(prd & "_最低运费") = dt.Compute("min(费用)","地区 = \'" & cus & "\' And 型号 = \'" & prd & "\'")
        dr(prd & "_最低快递") = dt.GetComboListString("快递", "地区 = \'" & cus & "\' And 型号 = \'" & prd & "\' and 费用 = " & dr(prd & "_最低运费"))
        Dim fdr As DataRow = dt.find("地区 = \'" & cus & "\' And 型号 = \'" & prd & "\'", "费用", 1)
        If fdr IsNot Nothing Then
            dr(prd & "_次最低运费") = fdr("费用")
            dr(prd & "_次最低快递") = dt.GetComboListString("快递", "地区 = \'" & cus & "\' And 型号 = \'" & prd & "\' and 费用 = " & fdr("费用"))
        End If
    Next
Next
MainTable= Tables("统计")

--  作者:jackchan120925
--  发布时间:2017/8/9 22:06:00
--  
非常感谢