Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Выборка по паре уникальных значений  [new]
Harya
Guest
Здравствуйте. Есть таблица:
table (guid uniqueidentifier, a varchar, b varchar, date date)

Мне надо сделать выборку всех значений таблицы где пары "a" и "b" уникальны и date наибольшая. Я делаю вот так, но что-то у меня есть сомнения, что это правильно.

select table.*
from table inner join
	(select a, b, max(date) as dateMax
				from table 
				group by a, b) p
		on p.a= table.a
			and p.b= table.b
			and p.date= table.dateMax
17 дек 13, 16:42    [15306272]     Ответить | Цитировать Сообщить модератору
 Re: Выборка по паре уникальных значений  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
Harya
надо сделать выборку всех значений таблицы где пары "a" и "b" уникальны и date наибольшая.
select top(1) with ties 
  t.*
from [table] t
order by rank()over(partition by a,b order by date desc)
17 дек 13, 17:01    [15306462]     Ответить | Цитировать Сообщить модератору
 Re: Выборка по паре уникальных значений  [new]
Harya
Guest
Cygapb-007,

А если есть такие ситуации, что даты одинаковые? Мне надо тогда первую попавшуюся запись брать. Это как сделать?

Вот мой запрос возвращает 130002 записи, ваш 130005 записей.

А мне надо 129230 )) Их возвращает
select distinct a, b
from table
17 дек 13, 17:10    [15306525]     Ответить | Цитировать Сообщить модератору
 Re: Выборка по паре уникальных значений  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
Harya
Cygapb-007,

А если есть такие ситуации, что даты одинаковые? Мне надо тогда первую попавшуюся запись брать. Это как сделать?

Вот мой запрос возвращает 130002 записи, ваш 130005 записей.

А мне надо 129230 )) Их возвращает
select distinct a, b
from table
тогда вместо RANK() использовать ROW_NUMBER()
17 дек 13, 17:11    [15306532]     Ответить | Цитировать Сообщить модератору
 Re: Выборка по паре уникальных значений  [new]
Harya
Guest
Cygapb-007,

Спасибо))
17 дек 13, 17:17    [15306575]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить