Foxtable(狐表)用户栏目专家坐堂 → 如何加载每个客户的最新一条订单?


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

主题:如何加载每个客户的最新一条订单?

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


加好友 发短信
等级:童狐 帖子:267 积分:2562 威望:0 精华:0 注册:2008/11/9 18:30:00
如何加载每个客户的最新一条订单?  发帖心情 Post By:2014/6/28 23:05:00 [只看该作者]

请教一个问题:订单表里,有n个客户,每个客户有n条记录,我如何加载每个客户的最新一条记录,代码应该如何写? 也就是说每个客户只筛选一条最新添加的记录,订单表有“客户姓名”和“订单日期”字段。

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


加好友 发短信
等级:五尾狐 帖子:1128 积分:11041 威望:0 精华:2 注册:2008/9/1 10:45:00
  发帖心情 Post By:2014/6/29 0:17:00 [只看该作者]

增加一列【标志列】,字符型

 

Dim mns As List(Of String) = DataTables("订单").GetUniqueValues("", "客户姓名")
DataTables("订单").LoadFilter=""
DataTables("订单").Load()
For Each dr As DataRow In DataTables("订单").DataRows
    dr("标志列")=""
Next
Dim h As DataRow
For Each mn As String In mns
    h = DataTables("订单").Find("客户姓名='" & mn & "'","订单日期 Desc")
    If h IsNot Nothing Then '如果找到的话
        h("标志列")="ok"
    End If
Next
DataTables("订单").LoadFilter="标志列='ok'"
DataTables("订单").Load()


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


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

Dim mns As List(Of String) = DataTables("订单").SQLGetValues("", "客户姓名")

Dim idxs As String = ""
For Each mn As String In mns
    Dim dr As DataRow = DataTables("订单").SQLFind("客户姓名='" & mn & "'","订单日期 Desc, [_Identify] desc")
    idxs &= dr("_Identify") & ","
Next

DataTables("订单").LoadFilter="[_Identify] in (" & idxs.TrimEnd(",") & ")"
DataTables("订单").Load()


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


加好友 发短信
等级:二尾狐 帖子:558 积分:5937 威望:0 精华:0 注册:2013/7/11 17:39:00
  发帖心情 Post By:2014/6/29 9:27:00 [只看该作者]

dim sql as string

sql="SELECT E.客户ID,O.订单ID FROM 客户表 AS E  CROSS APPLY (SELECT TOP(1)* FROM 订单表 AS O1 WHERE E.客户ID = O1.客户ID ORDER BY O1.订单日期 DESC,O1.订单ID DESC ) AS O"


DataTables("订单表").SQLLoad(sql)
[此贴子已经被作者于2014-6-29 10:23:33编辑过]

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


加好友 发短信
等级:二尾狐 帖子:558 积分:5937 威望:0 精华:0 注册:2013/7/11 17:39:00
  发帖心情 Post By:2014/6/29 9:52:00 [只看该作者]

WITH 订单 AS (
 SELECT n=ROW_NUMBER() OVER(partition BY 客户姓名 ORDER BY 订单日期 desc,订单ID desc),* FROM 订单表
)
SELECT * FROM 订单 WHERE n=1;


[此贴子已经被作者于2014-6-29 9:59:18编辑过]

 回到顶部