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

Откуда: г.Калининград
Сообщений: 21
Прошу помощи.

Имеется запрос в БД:

select id, date,bp from DocJournal (nolock) where idR = XXX
and Date > '20140901' order by BP,Date


Данный запрос выдает, что-то вроде:

id ---------- Date ---------- BP
=====================
1 ------- 20140901 ------- ABC
2 ------- 20140915 ------- ABC
3 ------- 20140907 ------- FGH
4 ------- 20140917 ------- FGH
5 ------- 20140910 ------- QWE
6 ------- 20140920 ------- QWE
**********************************

Вопрос:

Каким образом возможно из данного запроса "отфильтровать" только те строки в которых относительно BP, максимальное Date?


Т.е. из данных 6 записей должны отобразиться только 3:


id ---------- Date ---------- BP
=====================
1 ------- 20140915 ------- ABC
2 ------- 20140917 ------- FGH
3 ------- 20140920 ------- QWE
**********************************


Заранее спасибо.






P.S. В действительности запрос выдает несколько сотен строк.
27 сен 14, 02:27    [16628603]     Ответить | Цитировать Сообщить модератору
 Re: Необходимо "отфильтровать" данные выводимые запросом.  [new]
SERG1257
Member

Откуда:
Сообщений: 2877
Добавить в блок where
and date=(select max(date) from DocJournal d where  d.idR = XXX and d.Date > '20140901' and d.BP=DocJournal.BP)
27 сен 14, 04:01    [16628637]     Ответить | Цитировать Сообщить модератору
 Re: Необходимо "отфильтровать" данные выводимые запросом.  [new]
Maxim Dornostup
Member

Откуда: г.Калининград
Сообщений: 21
К сожалению не корректно отрабатывает.
Взял на примере запрос с 34 строками.
При добавлении вышеуказанного комментария, отображает всего 5 строк, хотя если проверить вручную, то видно, что имеется еще 8 позиций с одинаковым BP и 3 одиночных.
27 сен 14, 07:23    [16628677]     Ответить | Цитировать Сообщить модератору
 Re: Необходимо "отфильтровать" данные выводимые запросом.  [new]
aleks2
Guest
Maxim Dornostup
К сожалению не корректно отрабатывает.
Взял на примере запрос с 34 строками.
При добавлении вышеуказанного комментария, отображает всего 5 строк, хотя если проверить вручную, то видно, что имеется еще 8 позиций с одинаковым BP и 3 одиночных.


Ну дык, напиши запрос правильно.
Или разберись: чо те надо?

select id, date, bp 
   from DocJournal  d with(nolock)
     where idR = XXX and Date > '20140901' 
       and date=( select max(date) from DocJournal where  idR = XXX and Date > '20140901' and BP = d.BP )
   order by BP, Date

Ибо это выводит то, что ты просишь
"только те строки в которых относительно BP, максимальное Date"
27 сен 14, 09:35    [16628759]     Ответить | Цитировать Сообщить модератору
 Re: Необходимо "отфильтровать" данные выводимые запросом.  [new]
KRS544
Member

Откуда:
Сообщений: 497
RANK() ?
27 сен 14, 13:27    [16629015]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить