我有一个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/