2015-04-09 5 views
-1

У меня есть таблица с этими значениямиПолучить Последнее изменение записей в SQL Server

ID, Name , LastModifedDate 
1 , Tom , 01/01/2014 
1 , Romain, 04/01/2014 
2 , Paul , 01/01/2014 
3 , John , 02/01/2014 

и мне нужно, чтобы получить последние записи как следующий

1, Romain, 04/01/2014 
2, Paul 01/01/2014 
3, John, 02/01/2014 
+0

Почему Павел должен быть выбран, но не Том? – CindyH

+0

@CindyH, похоже, он хочет получить последнюю измененную строку на ID. –

ответ

4

Вы можете использовать row_number для выбора последнего изменения строка на ID

select * from (
    select *, 
     row_number() over (partition by ID order by LastModifiedDate desc) rn 
    from mytable 
) t1 where rn = 1 
0
declare @t table (Id int,name varchar(10),lasmodified date) 
    insert into @t(Id,name,lasmodified) values (1,'tom','01/01/2014'), 
    (1,'Romain','04/01/2014'),(2,'paul','01/01/2014'),(3,'john','02/01/2014') 

;with cte as 
    (select ID,name,lasmodified,row_number()OVER(PARTITION BY ID order by lasmodified desc) RN from @t) 

    select ID,name,MAX(CONVERT(VARCHAR(20),lasmodified,103)) from cte 
    WHERE RN = 1 
    group by ID,name 
order by name desc 
0

Вы имеете в виду все записи с 01 февраля? Почему следует выбирать Павла, но не Тома?

SELECT ID, Name, LastModifiedDate 
FROM YourTable 
where LastModifiedDate > '01/01/2014' 

Или вы хотите последние три?

SELECT TOP 3 ID, Name, LastModifiedDate 
FROM YourTable 
order by LastModifiedDate desc 
Смежные вопросы