SQL Server нумерация и отфильтрованные результаты
У меня есть приложение, в котором мне нужно отобразить «страницы» данных в списке. Основная идея довольно распространена. На дисплее отображается список элементов, а в нижней части экрана расположены элементы управления, позволяющие перейти на следующую «страницу». данных.
Все хорошо. У меня это работает.
Ниже приводится SQL в представлении, которое я использую для поддержки & quot; next & quot; поведение.
CREATE VIEW CampaignParticipants AS
SELECT row_number() OVER (ORDER BY TPT.LastName, TPT.FirstName, TPT.DoB) AS RowNumber
,CGP.*
,TPT.*
FROM tblCampaignGEDPush CGP
JOIN tblParticipants TPT
ON CGP.PartID = TPT.PartID
Вот как я использую ВИД
SELECT *
FROM CampaignParticipants
WHERE RowNumber >= 0
AND RowNumber <= 100
Это имитирует захват "первой страницы" из 100 результатов из VIEW. Страницы через каждый набор результатов просто персик.
Отлично .. НО
Как некоторые из вас, которые имели дело с этим, вероятно, знают, это ошибочно. Если я хочу искать наTPT.LastName like 'R%'
и получить первый набор результатов, я обречен.
Я хочу начать смотреть наRowNumber = 0
, останавливаться наRowNumber = 100
, но "R" результаты, вероятно, будут далеко за пределами этого диапазона. Upshot: список возвращается пустым.
И это становится более липким: пользователь хочет иметь возможность «фильтровать» на LastName, FirstName, DoB, Location, Phone, Zip, что угодно.
** редактировать: я действительно не могу установить фильтр на "внутреннюю" страницу. запрос, так как он в представлении, и фильтр может изменяться произвольно
Кто-нибудь есть какие-либо идеи, как получить этот набор результатов естьrow_number()
наfiltered множество результатов?