我有这张桌子:

create table #tmp
(
  column1 varchar(3),
  column2 varchar(5),
  column3 datetime,
  column4 int
)

insert into #tmp values ('AAA', 'SKA', '2013-02-01 00:00:00', 10)
insert into #tmp values ('AAA', 'SKA', '2013-01-31 00:00:00', 15)
insert into #tmp values ('AAA', 'SKB', '2013-01-31 00:00:00', 20)
insert into #tmp values ('AAA', 'SKB', '2013-01-15 00:00:00', 5)
insert into #tmp values ('AAA', 'SKC', '2013-02-01 00:00:00', 25)


我想选择按column3排序的具有不同column2的行。
这是期望的结果:

Col1  Col2   Col3                       Col4
AAA   SKB    2013-01-15 00:00:00.000    5
AAA   SKA    2013-01-31 00:00:00.000    15
AAA   SKC    2013-02-01 00:00:00.000    25


我怎样才能做到这一点?
我正在使用MS SQL 2005和2008

最佳答案

试试这个

;with cte as
(
  select *,
  row_number() over (partition by column1, column2
             order by column3) rnk
  from #tmp

) select * from cte where rnk = 1
  order by column3;


SQL DEMO HERE

关于sql - 如何选择按日期排序的具有不同列值的行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14651026/

10-11 02:44
查看更多