Resultados rownumbering y filtrados de SQL Server
Tengo una aplicación en la que necesito mostrar "páginas" de datos en una lista. La idea básica es bastante común. La pantalla muestra una lista de elementos y en la parte inferior de la pantalla hay algunos tipos de controles que le permiten ir a la siguiente "página" de datos.
Todo bien y bien. Tengo este trabajo.
A continuación se muestra el SQL en una vista que estoy usando para admitir el comportamiento "siguiente".
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
Así es como uso el VIEW.
SELECT *
FROM CampaignParticipants
WHERE RowNumber >= 0
AND RowNumber <= 100
Esto simula la captura de la "primera página" de 100 resultados de la VISTA. Páginas a través de cada conjunto de resultados solo peachy.
Genial .. PERO
Como algunos de ustedes que han tratado con esto, probablemente estén conscientes, esto es defectuoso. Si quiero buscar enTPT.LastName like 'R%'
Y obtener el primer conjunto de resultados, estoy condenado.
Voy a querer empezar a mirarRowNumber = 0
, detente enRowNumber = 100
, pero los resultados de "R" probablemente estarán fuera de ese rango. Resultado: la lista vuelve vacía.
Y se vuelve más pegajoso: el usuario quiere poder "filtrar" en Apellido, Nombre, DoB, Ubicación, Teléfono, Zip, cualquier cosa.
** edición: realmente no puedo poner el filtro en la consulta "interna", ya que está en una vista, y el filtro puede cambiar arbitrariamente
Alguien tiene alguna idea de cómo obtener este conjunto de resultados.row_number()
sobre elfiltrado conjunto de resultados?