jueves, 30 de agosto de 2007

Un query para paginar a nuestro antojo.

Veamos este primer ejemplo que tomará los primeros 10 registros encontrados en la tabla Clientes:

SELECT TOP 10 * FROM Clientes
WHERE IdCliente NOT IN
(
SELECT TOP 0 IdCliente FROM Clientes
ORDER BY IdCliente
)
ORDER BY IdCliente


Ahora tomando los siguientes 10 registros:

SELECT TOP 10 * FROM Clientes
WHERE IdCliente NOT IN
(
SELECT TOP 10 IdCliente FROM Clientes
ORDER BY IdCliente
)
ORDER BY IdCliente


Ahora tomando el tercer grupo (TOP 20) de 10 registros (TOP 10):

SELECT TOP 10 * FROM Clientes
WHERE IdCliente NOT IN
(
SELECT TOP 20 IdCliente FROM Clientes
ORDER BY IdCliente
)
ORDER BY IdCliente


Obsérvese la aplicación de filtros al ejemplo anterior.

SELECT TOP 10 * FROM Clientes
WHERE IdCliente NOT IN
(
SELECT TOP 20 IdCliente FROM Clientes
WHERE Vigencia > GetDate()
ORDER BY IdCliente
)
AND WHERE Vigencia > GetDate()
ORDER BY IdCliente

No hay comentarios: