PDA

Ver la Versión Completa : consulta Rara


Abel Garcia
16-08-2005, 21:38:34
Bueno creo que es una consulta sencilla pero no he encontrado la forma de hacerla agradeceria su amable ayuda se trata solo de Obtener solo las Lineas de una tabla las cuales tengan el valor mas grande en uno de sus capos Eje:

Tabla Ejemplo:

Id Sec Valor
1 1 5
1 2 6
1 3 8
2 1 0
2 2 5
2 3 4
2 4 2
3 1 8
4 1 5
4 2 5

Id Identifica el Registro. Necesito una consulta que me retorne solo las lineas en rojo. en otras palabras las que en el campo Sec se encuentre el valor mas alto. Tomando en cuenta que este valor no tiene maximo, para cada valor actualizado se incremeta en una unidad.


:D Gracias.....

maeyanes
16-08-2005, 22:05:55
Puedes intentar algo como:

select id, max(sec), valor from tabla
group by id, valor

espero que te sirva...


Saludos...

roman
16-08-2005, 22:18:53
Me suena más algo como


select a.id, a.sec, a.valor
from tabla a
where sec = (
select max(b.sec) from tabla b where
b.id = a.id
)


// Saludos

Abel Garcia
16-08-2005, 22:46:41
roman Muchas gracias
el Metodo que me propones funciona adecuadamente...

Abel Garcia
16-08-2005, 22:48:02
MEAYANES :) No me funciona este metodo. segun yo lo probe pero no da la respuesta adecuada,
de cualquier forma te agradesco tu tiempo. MUCHAS GRACIAS

Crandel
17-08-2005, 06:06:07
al ser una sola tabla, se podría simplificar la versión de Roman


select Id, Sec, Valor
from tabla A
where Sec = (select max(Sec) from tabla A)

por las dudas

roman
17-08-2005, 06:20:27
Mmmm... ¿seguro?

De esta forma la subconsulta siempre regresa el mismo valor (el máximo de todos los registros), en este caso 4.

// Saludos

Crandel
17-08-2005, 06:58:32
pues olvidense del mesaje anterior, respondi para cualquier cosa que entendi.

Solo devuelve los registros para los cuales Sec es mayor.

Delphius
17-08-2005, 07:14:50
He estado dandole vueltas, en mi cabeza, alguna solución a esa consulta para el caso de una sola tabla, tal como intentó realizar Crandel,... no se si será que mi cabeza ya no responde bien a estas horas (son las 1:57 am en Argentina) pero, a mi entender, NO HAY SOLUCION PARA EL CASO DE UNA SOLA TABLA (aunque puedo estar equivocado: no soy experto en SQL).
Según veo se tiene que tener una relación de uno a varios (1 id -> varios Sec) y de todas esas relaciones obtener la correspondiente al Sec con el valor máximo para cada Id.Esto me llevó a que la respuesta de Roman es correcta.

Lo que me está mareando es:
solo las Lineas de una tablaMe pregunto: ¿es una sola tabla? Por el momento mi cabeza no encuentra la solución...