提取最后四个日期的SQL查询

提取最后四个日期的SQL查询,sql,sql-server,Sql,Sql Server,我正在使用SQL Server 2012,并尝试在OrderDate列中为某些成员提取最近的4个订单日期。我不知道该如何为此编写代码。任何帮助都将不胜感激 应该是类似的: select top 4 o.OrderDate from Members m inner join Orders o on m.ID = o.MemberID where <your certain members criteria> order by o.OrderDate desc 选择前4个订单日期 m成

我正在使用SQL Server 2012,并尝试在
OrderDate
列中为某些成员提取最近的4个订单日期。我不知道该如何为此编写代码。任何帮助都将不胜感激

应该是类似的:

select top 4 o.OrderDate
from Members m
inner join Orders o
on m.ID = o.MemberID
where <your certain members criteria>
order by o.OrderDate desc
选择前4个订单日期
m成员
内部连接顺序
在m.ID=o.MemberID上
哪里
按o.OrderDate描述订购

按日期降序排列,并将行数限制为4行,如下所示:

select top 4 order_date from orders order by order_date desc

优化器将发现您有一个限制,并优化查询以避免对整个表进行排序。如果order\U date列被索引,查询优化器将使用index获得四个日期,而无需访问表本身。

我会这样做(您没有提供表结构,所以这只是伪代码)

  • 创建空表临时订单以存储每个成员的顶级订单
  • 打开游标以浏览所有成员ID
  • 对于每个@MemberId插入临时工,从订单中选择前4个*,其中MemberId=@MemberId order by OrderDate desc
  • 您的结果在表中

  • 您还没有提供任何示例数据,或者确实没有提供任何可用于帮助您的数据。我想应该是的,我之所以这么说是因为这只是一个基于猜测表结构的近似答案。