Filtrado de Registros

Prueba esto:
select top 5 * from tabla where pozo=1 UNION select top 5 * from tabla where pozo=2 UNION .... UNION select top 5 * from tabla where pozo=N
Estoy suponiendo que los distintos pozos los identificas por números. Adáptalo como mejor se ajuste a la estructura de tu tabla.
Un saludo dsd Cádiz
1

1 Respuesta

25.425 pts.
Bueno en vista de las limitaciones de tu sistema de BD, te propongo que obtengas los registros por programación, es decir, por ejemplo podrías obtener la tabla ordenada por pozos y después dentro de cada pozo ordenado por el campo que quieras extraer los cinco primeros, supongamos que sea fecha, entonces:
select * from tabla order by pozo asc, fecha desc
Este sería el caso que quisieras obtener los 5 registros más recientes de un pozo.
Vale, una vez devuelta la tabla ordenada deberías por programación extraer los 5 primeros registros para un numero de pozo y llegado al 6º saltar al primer registro del siguiente pozo. Un ejemplo completo para ASP podría ser:
<%
Set rs_pozo= Server.CreateObject("ADODB.Recordset")
rs_pozo.ActiveConnection = con
rs_pozo.Source = "SELECT * FROM TABAL ORDER BY POZO ASC, FECHA DESC?
rs_pozo.CursorType = 0
rs_pozo.CursorLocation = 2
rs_pozo.LockType = 1
rs_pozo.Open()
DIM encontrado,n_pozo,cambia,cont
encontrado=False
WHILE NOT rs_pozo.EOF NOT encontrado
n_pozo=rs_pozo("pozo")
cont=0
while n_pozo=rs_pozo("pozo") or cont <= 5
....
cont=cont+1
....
rs_pozo.MoveNext()
Wend
Wend
rs_pozo.Close()
Donde te he puesto los puntos suspensivos metes el código que quieras para extraer los datos. No se si me he saltao algo, porque lo he hecho así como a lo loco. Pero espero cojas la idea.
Buenas Tardes, Tengo una tabla desde la cual quiero obtener los primeros 5 registros de un campo seleccionado, ejemplo, tengo los siguientes Campos: Pozo, Fecha, Petroleo, Gas; esta tabla tiene muchos registros para cada pozo, necesito obtener los primeros 5 de cada uno, como hago, he intentado con todo y nada (utilizo ADO y consultas SQL), por favor si pueden ayudarme
Gracias por Responder, solamente dos cosas: 1.) TOP no existe en le sql que utilizo (no estoy 100 % seguro pero creo que es sqlserver), existe una que se llama ROWNUM pero creo que no sirve y 2.) si fuera una consulta de 60 pozos por ejemplo, tendría que agregar "UNION select top 5 * from..." ¿60 veces? Una consulta tan larga (la expresión) es manejable, ¿es posible?
Saludos y gracias
Gracias, De echo así es que lo hago (directamente con VBA con Excel), la idea erá ver si existía otra forma que no fuera tan larga en caso de bastantes pozos (por lo general son muchos, más de 100), nuevamente gracias por la ayuda

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas