Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Выборка одним запросом по максимальной дате  [new]
Диченка
Member

Откуда: ИТ-Олимп, 58.1-летний супермен
Сообщений: 3989
Господа, есть такая табличка

Tov_id                  Doc_date                   Cn_Vx

0000001               20040215                   100
0000001               20030501                   200
0000002               20040417                   50
0000001               20040603                   40
0000002               20050713                   25
0000003               20040803                   70
0000003               20020303                   80

Как одним запросом получить такое

0000001               20040603                   40
0000002               20050713                   25
0000003               20040803                   70

Т.е. нужно выполнить группировку по полю Tov_id, выбрав для каждого значения в Tov_id строку с максимальной датой и соответствующим этой дате значением в колонке Cn_Vx
4 май 05, 16:26    [1516514]     Ответить | Цитировать Сообщить модератору
 Re: Выборка одним запросом по максимальной дате  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
SELECT
  *
FROM
  Table1 T
WHERE
  Doc_Date = (SELECT TOP 1 Doc_Date FROM Table1 
              WHERE Tov_id = T.Tov_id ORDER BY Doc_Date DESC)
4 май 05, 16:31    [1516541]     Ответить | Цитировать Сообщить модератору
 Re: Выборка одним запросом по максимальной дате  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37100
Если дата в пределах товра уникальна, то:
select
  b.*
from (
  select
    Tov_id, max(doc_date) as doc_date
  from [table]
  group by tov_id
) a
inner join [table] b on a.tov_id = b.tov_id and a.doc_date = b.doc_date
4 май 05, 16:31    [1516543]     Ответить | Цитировать Сообщить модератору
 Re: Выборка одним запросом по максимальной дате  [new]
unicode
Member

Откуда:
Сообщений: 810
select 1 as ID,'a' as NAME,5 as VAL into #a
union all
select 1 as ID,'a' as NAME,2 as VAL
union all
select 2 as ID,'a' as NAME,4 as VAL
union all
select 3 as ID,'a' as NAME,6 as VAL
go
select ID,MAX(VAL) from #a
GROUP BY ID
go
drop table #a

ЧТО-ТО ТИПА ТАКОГО
4 май 05, 16:32    [1516549]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить