Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MS SQL Server (https://www.clubdelphi.com/foros/forumdisplay.php?f=23)
-   -   consulta Rara (https://www.clubdelphi.com/foros/showthread.php?t=24322)

Abel Garcia 16-08-2005 21:38:34

consulta Rara
 
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:
Código SQL [-]
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

Código SQL [-]
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

version con una tabla
 
al ser una sola tabla, se podría simplificar la versión de Roman

Código SQL [-]
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:
Cita:

Empezado por Abel Garcia
solo las Lineas de una tabla

Me pregunto: ¿es una sola tabla? Por el momento mi cabeza no encuentra la solución...


La franja horaria es GMT +2. Ahora son las 21:53:21.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi