找到与另一个字段中的数据的最大值匹配的一个字段的值

Ben*_*ack 3 sql sql-server aggregate sql-server-2005

我正在尝试编写一个查询,该查询获取与另一个字段(或多个字段)的最大值相关联的一个字段的.假设我有以下数据表:

OrderID CustomerID  OrderDate   LocationID          
1       4           1/1/2001    1001
2       4           1/2/2001    1003
3       4           1/3/2001    1001
4       5           1/4/2001    1001
5       5           1/5/2001    1001
6       5           1/6/2001    1003
7       5           1/7/2001    1002
8       5           1/8/2001    1003
9       5           1/8/2001    1002
Run Code Online (Sandbox Code Playgroud)

分组依据CustomerID,我希望获得最大值OrderDate,然后与最大值LocationID相关联OrderDate.如果有共享的最大订单日期几条记录,然后采取LocationID与相关的最大OrderID距离与最大日期的记录中.

最终的数据集应如下所示:

CustomerID  OrderDate   LocationID      
4           1/3/2001    1001
5           1/8/2001    1002
Run Code Online (Sandbox Code Playgroud)

我一直在尝试编写一个包含大量嵌套子查询和丑陋连接的查询,但我并没有真正得到任何结论.我需要写什么SQL来帮助我获得这个结果.

Mar*_*ith 5

with cte As
(
select *, 
        row_number() over (partition by CustomerID 
                           order by OrderDate desc, OrderId desc) as rn
from yourtable
)
select CustomerID, OrderDate,LocationID
from cte 
where rn=1;
Run Code Online (Sandbox Code Playgroud)