select CustomerID,MIN(OrderDate) as OrderDate into #MinOrderDates
from Sales.SalesOrderHeader group by CustomerID order by CustomerID

select o.CustomerID,o.SalesOrderID,o.OrderDate from Sales.SalesOrderHeader as o 
join #MinOrderDates as t on o.CustomerID = t.CustomerID and  o.OrderDate = t.OrderDate
order by o.CustomerID

drop table #MinOrderDates这句SQL用 子查询 和 联结分 别怎么写?感觉用联结的难度有点高啊?
使用的是Adventurworks数据库。

解决方案 »

  1.   

    select o.CustomerID,o.SalesOrderID,o.OrderDate from Sales.SalesOrderHeader as o 
       inner join (select CustomerID,MIN(OrderDate) as OrderDate from Sales.SalesOrderHeader group by CustomerID) as t on o.CustomerID = t.CustomerID and  o.OrderDate = t.OrderDate order by o.CustomerID        
      

  2.   

    SELECT  o.CustomerID, o.SalesOrderID, o.OrderDate
    FROM    Sales.SalesOrderHeader AS o
            INNER JOIN (SELECT  CustomerID, MIN(OrderDate) AS OrderDate
                        FROM    Sales.SalesOrderHeader
                        GROUP BY CustomerID) AS t ON o.CustomerID=t.CustomerID AND o.OrderDate=t.OrderDate
    ORDER BY o.CustomerID        
      

  3.   

    --子查询
    select t.CustomerID,t.SalesOrderID,t.OrderDate from Sales.SalesOrderHeader t where t.OrderDate = (select min(OrderDate) from Sales.SalesOrderHeader where CustomerID = t.CustomerID) order by t.CustomerID
    select t.CustomerID,t.SalesOrderID,t.OrderDate from Sales.SalesOrderHeader t where not exists (select 1 from Sales.SalesOrderHeader where CustomerID = t.CustomerID and OrderDate < t.OrderDate) order by t.CustomerID--连接
    select m.CustomerID,m.SalesOrderID,m.OrderDate from Sales.SalesOrderHeader m,
    (select CustomerID,MIN(OrderDate) OrderDate from Sales.SalesOrderHeader group by CustomerID) n
    where m.CustomerID = n.CustomerID
    order by m.CustomerID
      

  4.   


    select t.CustomerID,t.SalesOrderID,t.OrderDate from Sales.SalesOrderHeader t where not exists (select 1 from Sales.SalesOrderHeader where CustomerID = t.CustomerID and OrderDate < t.OrderDate) order by t.CustomerID
    上面这句为什么是 not exists 我觉得是exists啊,但是运行后not exists才是对的?为什么呢?