【问题标题】:Query to pull second order date for a customer(SQL 2014)查询为客户提取第二个订单日期(SQL 2014)
【发布时间】:2015-04-29 08:50:15
【问题描述】:

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

我的查询

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

选择 customerid, order id, min(orderdate) as firstorderdate,... 来自客户的第一次订购日期在 01/01/2015’ 和 GETDATE() 之间

(因为我只想要那些今年首次购买的客户)

查询他们的第二次购买

Select customerid, orderid, orderdate from ( select customerid, orderid, orderdate, rwo_number() over (按 customerid 分区, orderid order by orderdate) rn 来自客户 其中 rn

【问题讨论】:

  • 粘贴您的查询..

标签: sql sql-server date ranking sql-server-2014


【解决方案1】:

没有看到您当前的查询,很难理解。我假设您当前的查询是这样的:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-15
    • 2021-04-09
    • 2013-05-05
    • 2013-11-22
    • 2021-09-07
    • 2017-06-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多