2014-10-01 130 views
0

我有很多不同的公司的表格,每一批订单,从只有1到可能的n第一个和最后ROW_NUMBER

我用

ROW_NUMBER() OVER (PARTITION BY CompanyName ORDER BY OrderDate) AS Orders 

这让我像一个样本下面

Comp1 1 
Comp2 1 
Comp3 1 
Comp3 2 
Comp3 3 
Comp3 4 
Comp4 1 
Comp4 2 
Comp4 3 

我该如何去通过该表并选择为每个公司的第一和最后一个记录?直到结束:

Comp1 1 
Comp2 1 
Comp3 1 
Comp3 4 
Comp4 1 
Comp4 3 

回答

3

您可以使用row_number()两次或count()

select c.* 
from (select c.*, 
      row_number() over (partition by CompanyName order by OrderDate) as seqnum, 
      count(*) over (partition by CompanyName) as cnt 
     from companies c 
    ) c 
where seqnum = 1 or seqnum = cnt; 
0
select * from Orders 
where (CompanyName , OrderDate) in (
    select CompanyName , min(OrderDate) from Orders group by CompanyName 
    union all 
    select CompanyName , max(OrderDate) from Orders group by CompanyName 
) 
相关问题