SQL Server 2012查询混乱

Zac*_*son 2 sql-server-2012

我是SQL的初学者,但似乎无法针对这个问题提出正确的查询:

使用相关子查询为每个客户返回一行,代表客户的最旧订单(日期最早的那一行)。每行应包括以下三列:EmailAddress,OrderID和OrderDate。

我从加入订单和客户表开始。EmailAddress是客户表中唯一需要的列。

      SELECT EmailAddress, OrderDate, orderID
      FROM Customers c JOIN orders o
      ON c.CustomerID = o.CustomerID
Run Code Online (Sandbox Code Playgroud)

小智 5

一个不太复杂的答案:

SELECT  EmailAddress, OrderID, OrderDate AS OldestOrder
  FROM  Customers AS C
        JOIN Orders AS O1
            ON C.CustomerID = O1.CustomerID
 WHERE  O1.OrderDate =
            (SELECT MIN(OrderDate)
             FROM Orders AS O2
             WHERE C.CustomerID = O2.CustomerID)
Run Code Online (Sandbox Code Playgroud)