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

Откуда:
Сообщений: 1
Добрый день.

Ситуация такая, есть таблица:

ID|FIO|STATUS|DATA
1|Иванов|inwork|01.02.2015
2|Иванов|send|02.03.2015
3|Петров|done|12.12.2014
4|Петров|recieved|11.12.2014
5|Сидоров|inwork|02.02.2015

мне нужно, чтобы в результате запроса выгружались все поля, при этом в случае если значения в поле FIO совпадают, то в выгрузку попадало только одна строка с максимальной датой. Т.е. результат должен быть такой:

2|Иванов|send|02.03.2015
3|Петров|done|12.12.2014
5|Сидоров|inwork|02.02.2015

Пробовал делать через связку с агрегатной функцией Group by+max, но тогда нужно либо в Group by добавлять поля Status и ID, либо задавать для них агрегатную функцию, а это не вариант. Есть варианты ?
27 мар 15, 06:23    [17438153]     Ответить | Цитировать Сообщить модератору
 Re: Выборка максимального из повторяющихся значений  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3104
SELECT TOP (1) WITH TIES
...
ORDER BY ROW_NUMBER() OVER (PARTITION BY FIO ORDER BY DATA DESC)
27 мар 15, 07:56    [17438237]     Ответить | Цитировать Сообщить модератору
 Re: Выборка максимального из повторяющихся значений  [new]
Вячеслав Д
Member

Откуда:
Сообщений: 37
drt88, А можно еще и так
CREATE TABLE #Res(
Id int,
FIO VarChar(32),
Status VarChar(32),
Data DateTime
)

INSERT INTO #Res(ID,FIO,STATUS,DATA)
SELECT 1,'Иванов','inwork',Convert(DateTime,'01.02.2015') UNION ALL
SELECT 2,'Иванов','send',Convert(DateTime,'02.03.2015') UNION ALL
SELECT 3,'Петров','done',Convert(DateTime,'12.12.2014') UNION ALL
SELECT 4,'Петров','recieved',Convert(DateTime,'11.12.2014') UNION ALL
SELECT 5,'Сидоров','inwork',Convert(DateTime,'02.02.2015')


Select * 
from #Res a
WHERE a.Data=(Select MAX(Data)
		From #Res b
		Where a.FIO=b.Fio
	)
DROP TABLE #Res
27 мар 15, 09:14    [17438351]     Ответить | Цитировать Сообщить модератору
 Re: Выборка максимального из повторяющихся значений  [new]
Добрый Э - Эх
Guest
Вячеслав Д
drt88, А можно еще и так
а можно ещё и другими пятью способами.
27 мар 15, 12:29    [17439763]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить