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

Откуда: Новосибирск
Сообщений: 61
Дамы и господа, пожалуйста, помогите !

Есть таблица:
idkod
120
121
148
225
226
232
236
315
377
488
591
594
595


Надо получить следующее:
idkod
121
232
315
594

Т.е. необходимо выбрать одним запросом записи для каждого id у которых, значение в поле kod будет самым большим, но при этом не будет максимальным. И если для какого - либо id есть одна запись, то этот id не будет попадать в выборку. Значения в поле - kod уникальные.
3 фев 15, 21:14    [17214552]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать запись перед максимальной  [new]
SERG1257
Member

Откуда:
Сообщений: 2843
добавьте условие типа
where kod<(select max(kod) from yourtable)
3 фев 15, 21:21    [17214575]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать запись перед максимальной  [new]
andrey_andrey
Member

Откуда: Новосибирск
Сообщений: 61
SERG1257,

Условие - where kod<(select max(kod) from yourtable) исключит записи где поле - kod = max. А остальные записи останутся.
3 фев 15, 21:33    [17214601]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать запись перед максимальной  [new]
invm
Member

Откуда: Москва
Сообщений: 9723
select
 t.id, t.kod
from
 (select id, kod, row_number() over (partition by id order by kod desc) as r from Таблица) t 
where
 t.r = 2;
3 фев 15, 21:33    [17214607]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать запись перед максимальной  [new]
SERG1257
Member

Откуда:
Сообщений: 2843
andrey_andrey
Условие - where kod<(select max(kod) from yourtable) исключит записи где поле - kod = max. А остальные записи останутся
Ну что ты как маленький, конечно это надо делать для группы.
Идея в том, чтобы просто отфильтровать максимальные записи

select id, max(kod) from #yourtable t
where kod<(select max(kod) from #yourtable t1 where t.id=t1.id)
group by id
3 фев 15, 22:31    [17214753]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать запись перед максимальной  [new]
andrey_andrey
Member

Откуда: Новосибирск
Сообщений: 61
Для SERG1257 и invm.

Большое Вам спасибо !!!
4 фев 15, 09:53    [17215628]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать запись перед максимальной  [new]
iap
Member

Откуда: Москва
Сообщений: 47084
А если несколько равных максимумов, то что надо выбрать? Один из них?
4 фев 15, 12:58    [17216735]     Ответить | Цитировать Сообщить модератору
 Re: Выбрать запись перед максимальной  [new]
invm
Member

Откуда: Москва
Сообщений: 9723
iap
А если несколько равных максимумов, то что надо выбрать? Один из них?
andrey_andrey
Значения в поле - kod уникальные.
4 фев 15, 13:18    [17216872]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить