Выбор только последней версии поля - PullRequest
0 голосов
/ 12 апреля 2011

У меня есть схема таблицы с идентификатором, названием, датой

, и данные выглядят примерно так:

1  The title1    2011-04-05 00:00:00.000
2  Another title 2011-04-11 00:00:00.000
3  The title1    2011-04-11 16:49:23.633
4  The title1    2011-04-11 00:00:00.000   

Мне нужна помощь с sql, чтобы дать мне самую последнюю дату каждого заголовка,Таким образом, выход для вышеуказанных данных составляет

2  Another title 2011-04-11 00:00:00.000
3  The title1    2011-04-11 16:49:23.633

Ответы [ 6 ]

5 голосов
/ 12 апреля 2011
select id,title,date from [schema]
where title in (select title from [schema] group by title having date=max(date))

попробуйте это

2 голосов
/ 12 апреля 2011
select mytable.Title, MAX(mytable.Date)
from mytable
group by mytable.Title
2 голосов
/ 12 апреля 2011

Посмотрите на Макса и группу в Книгах онлайн

1 голос
/ 12 апреля 2011

Предполагается, по крайней мере, SQL Server 2005:

SELECT ID, Title, [Date]
    FROM (SELECT ID, Title, [Date],
                 ROW_NUMBER() OVER(PARTITION BY Title ORDER BY [Date] DESC) AS RowNum
              FROM YourTable
         ) t
    WHERE t.RowNum = 1
1 голос
/ 12 апреля 2011

Предполагая, что ваше имя таблицы mytable:

select 
  tbl.ID, tbl.Title, tbl.Date
from 
  mytable tbl join
  (select Title, max(Date) Date
   from mytable) maxes on tbl.Date = maxes.Date and tbl.Title = maxes.Title
1 голос
/ 12 апреля 2011

Посмотрите на Включение связанных значений агрегированного столбца , есть несколько способов сделать это

Один из способов будет

select t1.* from(
select Title, Max(Date) as MaxDate
From YourTable
group by Title) t2
join YourTable t1 on t2.Title = t1.Title
and t1.Date = t2.MaxDAte
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...