Foxtable(狐表)用户栏目专家坐堂 → SQL 分组 用狐表自己的方法完成


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

主题:SQL 分组 用狐表自己的方法完成

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


加好友 发短信
等级:二尾狐 帖子:568 积分:6437 威望:0 精华:2 注册:2012/12/23 8:21:00
SQL 分组 用狐表自己的方法完成  发帖心情 Post By:2015/3/23 11:22:00 [只看该作者]

select * f rom 
(select t.*, row_number() over(partition by 分组字段 order by 排序字段 desc ) rn
f rom 表名称 t )
where rn=1

以上的SQL 提取到不同的值 根据排序字段 就行分组

我的想法是 用 简单的语句 加载 数据 

SELECT DISTINCT NAME,Data F ROM Student ORDER BY Data DESC

加载过来后 


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

然后对这张表格中重复的值中根据Data 保留Data中最大的值 

用代码如何实现 


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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/3/23 11:26:00 [只看该作者]

直接用SQL语句不是更好么?


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


加好友 发短信
等级:七尾狐 帖子:1732 积分:11266 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2015/3/23 11:27:00 [只看该作者]

你把SQL生成视图或表函数,调用即可

Select * f rom 视图名称。

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


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

用SQL语句更好,如果一定要用foxtable处理,参考:

 

DataTables("表A").StopRedraw
Dim drs As List(of DataRow) = DataTables("表A").Select("","Name, Data Desc")
For i As Integer  = 1 To drs.count-1
    If drs(i)("Name") = drs(i-1)("Name")
        drs(i).remove
        i  =i +1
    End If
Next
DataTables("表A").ResumeRedraw()

 

但是效率会比较低。


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


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

这样完善点:

 

DataTables("表A").StopRedraw
Dim drs1 As List(of DataRow) = DataTables("表A").Select("","Name, Data Desc")
Dim drs2 As New List(of DataRow)
For i As Integer  = 1 To drs1.count-1
    If drs1(i)("Name") = drs1(i-1)("Name")
        drs2.add(drs1(i))
    End If
Next
For Each dr As DataRow In drs2
    dr.Remove
Next
DataTables("表A").ResumeRedraw()


 回到顶部