我有一个SQL Server 2008数据库。该数据库有两个表,分别称为“客户”和“订单”。这些表的定义如下:

Customer
--------
ID,
First Name,
Last Name

Order
-----
ID,
CustomerID,
Date,
Description


我正在尝试编写一个查询,该查询返回数据库中的所有客户。如果用户已下达至少一个订单,我想返回与最近下达的订单相关的信息。目前,我有以下内容:

SELECT
  *
FROM
  Customer c LEFT OUTER JOIN Order o ON c.[ID]=o.[CustomerID]


可以想象,这将返回与客户关联的所有订单。但实际上,我只想要最新的。如何在SQL中执行此操作?

谢谢!

最佳答案

select c.ID, c.FirstName, c.LastName, o.ID as OrderID, o.Date, o.Description
from Customer c
left outer join (
    select CustomerID, max(Date) as MaxDate
    from Order
    group by CustomerID
) om on c.ID = om.CustomerID
left outer join Order o on om.CustomerID = o.CustomerID and om.MaxDate = o.Date

关于sql-server - SQL Server 2008-从联接表获取最新记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2804176/

10-16 06:29