查询客户的二次订单日期(SQL 2014)

查询客户的二次订单日期(SQL 2014),sql,sql-server,date,ranking,sql-server-2014,Sql,Sql Server,Date,Ranking,Sql Server 2014,我有一个客户、订单和订单日期的模式。 客户可以有多个日期的订单。我需要一个计算过的成员带来第一个订单日期和第二个订单日期与其他相关指标。 我能够使用minorder日期作为第一个订单获取第一个订单日期和相关数据,但在查询第二个订单日期时遇到问题。任何建议都会有帮助!谢谢 我的问题 --我将所有信息都放在一个表中,因此我的查询看起来像 选择customerid、订单id、minorderdate作为firstorderdate,。。。 从2015年1月1日至GETDATE首次订购的客户处 因为我只

我有一个客户、订单和订单日期的模式。 客户可以有多个日期的订单。我需要一个计算过的成员带来第一个订单日期和第二个订单日期与其他相关指标。 我能够使用minorder日期作为第一个订单获取第一个订单日期和相关数据,但在查询第二个订单日期时遇到问题。任何建议都会有帮助!谢谢

我的问题

--我将所有信息都放在一个表中,因此我的查询看起来像

选择customerid、订单id、minorderdate作为firstorderdate,。。。 从2015年1月1日至GETDATE首次订购的客户处

因为我只想要今年第一次购买的客户

询问他们的第二次购买

从选择customerid中选择customerid、orderid、orderdate, orderid、orderdate、按customerid划分的rwo_编号, orderid按客户的orderdate rn订购
其中rn没有看到您当前的查询,很难理解。我假设您当前的查询如下:

select c.customerid, o.orderid, min(od.orderdate)
from customers c
    join orders o on c.customerid = o.customerid
    join orderdates od on o.orderid = od.orderid
group by c.customerid, o.orderid
执行相同查询的另一种方法是使用row_number。这样做,您不仅限于小组中的第一名:

select customerid, orderid, orderdate
from (
    select c.customerid, o.orderid, od.orderdate, 
        row_number() over (partition by c.customerid, o.orderid
                           order by od.orderdate) rn
    from customers c
        join orders o on c.customerid = o.customerid
        join orderdates od on o.orderid = od.orderid
) t
where rn <= 2

粘贴您的查询。。