Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MS SQL Server
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-08-2005
Abel Garcia Abel Garcia is offline
Miembro
 
Registrado: nov 2004
Posts: 45
Poder: 0
Abel Garcia Va por buen camino
Lightbulb 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.


Gracias.....
Responder Con Cita
  #2  
Antiguo 16-08-2005
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Puedes intentar algo como:
Código SQL [-]
select id, max(sec), valor from tabla
group by id, valor
espero que te sirva...


Saludos...
Responder Con Cita
  #3  
Antiguo 16-08-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #4  
Antiguo 16-08-2005
Abel Garcia Abel Garcia is offline
Miembro
 
Registrado: nov 2004
Posts: 45
Poder: 0
Abel Garcia Va por buen camino
roman Muchas gracias
el Metodo que me propones funciona adecuadamente...
Responder Con Cita
  #5  
Antiguo 16-08-2005
Abel Garcia Abel Garcia is offline
Miembro
 
Registrado: nov 2004
Posts: 45
Poder: 0
Abel Garcia Va por buen camino
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
Responder Con Cita
  #6  
Antiguo 17-08-2005
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 23
Crandel Va por buen camino
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
__________________
[Crandel]
Responder Con Cita
  #7  
Antiguo 17-08-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Mmmm... ¿seguro?

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

// Saludos
Responder Con Cita
  #8  
Antiguo 17-08-2005
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 23
Crandel Va por buen camino
pues olvidense del mesaje anterior, respondi para cualquier cosa que entendi.

Solo devuelve los registros para los cuales Sec es mayor.
__________________
[Crandel]
Responder Con Cita
  #9  
Antiguo 17-08-2005
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
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...
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 01:23:02.


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