Foxtable(狐表)用户栏目专家坐堂 → [求助]分组求和问题


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

主题:[求助]分组求和问题

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


加好友 发短信
等级:小狐 帖子:348 积分:3553 威望:0 精华:0 注册:2015/8/16 19:06:00
[求助]分组求和问题  发帖心情 Post By:2019/6/13 18:12:00 [只看该作者]

有一个表
流水 支付方式  支付金额
1     微信            1.00
2     支付宝         1.00
3     现金            1.00
4     微信            2.00
5     支付宝         2.00
6     信用卡         1.00
7     微信            3.00
8     信用卡         2.00
9     现金            2.00
想统计每种支付方式的支付金额合计(每种支付方式第一笔交易除外),代码如何写

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/6/13 18:14:00 [只看该作者]

直接分组统计,然后循环每一行,减去第一次的交易,即可。

 

你需要把统计显示在哪里?是sql语句,还是代码?具体问题做个实例发上来测试。


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


加好友 发短信
等级:小狐 帖子:348 积分:3553 威望:0 精华:0 注册:2015/8/16 19:06:00
  发帖心情 Post By:2019/6/13 18:24:00 [只看该作者]

直接生成一个临时表就可以,sql 和代码都可以,只要能显示结果就可以(最好能自定义前n笔交易不计算)
[此贴子已经被作者于2019/6/13 18:30:57编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/6/13 18:33:00 [只看该作者]

Dim g As New GroupTableBuilder("统计表1", DataTables("表B"))
g.Groups.AddDef("第一列")
g.Totals.AddDef("第二列")
g.Build()
Dim t = Tables("统计表1")
For Each r As Row In t.Rows
    Dim fdr = DataTables("表B").find("第一列='" & r("第一列") & "'", "_Identify")
    If fdr IsNot Nothing Then
        r("第二列") -= fdr("第二列")
    End If
Next
MainTable = Tables("统计表1")

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


加好友 发短信
等级:小狐 帖子:348 积分:3553 威望:0 精华:0 注册:2015/8/16 19:06:00
  发帖心情 Post By:2019/6/13 18:44:00 [只看该作者]

想不计算前10笔记录怎么写呢

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/6/13 18:52:00 [只看该作者]

以下是引用happy_gile在2019/6/13 18:44:00的发言:
想不计算前10笔记录怎么写呢

 

如果是sqlserver数据库,直接用sql语句处理,比较方便,效率也比较高

 

如果写代码,较为繁琐。

 

Dim g As New GroupTableBuilder("统计表1", DataTables("表B"))
g.Groups.AddDef("第一列")
g.Totals.AddDef("第二列")
g.Build()
Dim t = Tables("统计表1")
For Each r As Row In t.Rows
    Dim sum As Double = 0
    Dim drs = DataTables("表B").Select("第一列='" & r("第一列") & "'", "_Identify")
    For i As Integer = 0 To 9
        If drs.count <= i Then
            Exit For
        End If
        sum += drs(i)("第二列")
    Next
    r("第二列") -= sum
   
Next
MainTable = Tables("统计表1")


 回到顶部