Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Un sólo registro de cada valor

Estas en el tema de Un sólo registro de cada valor en el foro de SQL Server en Foros del Web. Buenas a todos, Este es mi primer mensaje y espero pueda ser resuelto. Es el siguiente: tengo una tabla y necesitaría quedarme con una o ...
  #1 (permalink)  
Antiguo 07/05/2009, 15:19
 
Fecha de Ingreso: mayo-2009
Mensajes: 114
Antigüedad: 15 años
Puntos: 1
Un sólo registro de cada valor

Buenas a todos,
Este es mi primer mensaje y espero pueda ser resuelto.
Es el siguiente: tengo una tabla y necesitaría quedarme con una o varias filas, pero que un campo sea único. Como creo que no me he explicado, pongo mejor un ejemplo

ID CANTIDAD
1 5
2 3
3 10
1 7
5 3
9 9
4 6
1 3
2 6

Me gustaría sacar una sentencia SQL de forma que me quede con una fila por cada ID. Caso de tener ID repetido, sólo el de mayor cantidad. Es decir:

ID CANTIDAD
1 7
2 6
3 10
4 6
5 3
9 9

He probado varias formas pero no veo la forma de sacarlo.
Muchas gracias de antemano.
  #2 (permalink)  
Antiguo 07/05/2009, 16:15
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 9 meses
Puntos: 39
Respuesta: Un sólo registro de cada valor

Bienvenido al foro SQL Server!
Prueba con esto:
Código sql:
Ver original
  1. SELECT ID, MAX(CANTIDAD) FROM tabla1 GROUP BY ID
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #3 (permalink)  
Antiguo 07/05/2009, 16:26
 
Fecha de Ingreso: mayo-2009
Mensajes: 114
Antigüedad: 15 años
Puntos: 1
Respuesta: Un sólo registro de cada valor

Muchas gracias.
Lo probaré y te comento.
  #4 (permalink)  
Antiguo 08/05/2009, 03:10
 
Fecha de Ingreso: mayo-2009
Mensajes: 114
Antigüedad: 15 años
Puntos: 1
Respuesta: Un sólo registro de cada valor

Lo he probado pero no funciona.
El tema es que traté de simplificar el problema.
Trato de ajustarme un poco más:

ID FECHAINICIO FECHAFIN IDCON
1 15/04/2009 15/05/2009 34
2 14/04/2009 14/05/2009 83
3 15/04/2009 16/05/2009 228
1 20/04/2009 <NULL> 35
7 14/04/2009 14/05/2009 58
4 15/04/2009 17/05/2009 132
1 14/04/2009 15/05/2009 55
2 17/04/2009 16/05/2009 84


El resultado debería ser algo así:

ID FECHAINICIO FECHAFIN IDCON
1 20/04/2009 <NULL> 35
2 17/04/2009 16/05/2009 84
3 15/04/2009 16/05/2009 228
4 15/04/2009 17/05/2009 132
7 14/04/2009 14/05/2009 58


Una sóla fila por cada ID, y si está repetido, el de FECHAINICIO más reciente

No funcionaba la sentencia anterior, por el hecho de agrupar sólo por ID.

Gracias por la ayuda.
  #5 (permalink)  
Antiguo 08/05/2009, 07:51
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 9 meses
Puntos: 39
Respuesta: Un sólo registro de cada valor

Código sql:
Ver original
  1. SELECT T1.*
  2. FROM tabla1 T1
  3. INNER JOIN (
  4.     SELECT ID, MAX(FECHAINICIO) FECHAINICIO FROM tabla1 GROUP BY ID
  5. ) T2 ON T1.ID=T2.ID AND T1.FECHAINICIO=T2.FECHAINICIO
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #6 (permalink)  
Antiguo 08/05/2009, 15:34
 
Fecha de Ingreso: mayo-2009
Mensajes: 114
Antigüedad: 15 años
Puntos: 1
Respuesta: Un sólo registro de cada valor

Funciona perfectamente. Una respuesta genial.
Muchísimas gracias.
  #7 (permalink)  
Antiguo 10/05/2009, 04:23
 
Fecha de Ingreso: febrero-2006
Mensajes: 38
Antigüedad: 18 años, 3 meses
Puntos: 0
Respuesta: Un sólo registro de cada valor

Muchas gracias por vuestra ayuda,

Tengo una duda si en este ejemplo en lugar de mostrar el valor max de cada id, quisieramos mostrar los 2 valores max o minimos de cada id, ¿Como lo hariamos?

Saludos.
  #8 (permalink)  
Antiguo 11/05/2009, 07:46
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 9 meses
Puntos: 39
Respuesta: Un sólo registro de cada valor

Depende como quieras mostrarlo. Si quieres agregar una columna mas con el valor minimo, entonces necesitarias indicar el ID correspondiente. Luego la pregunta seria: cual es la relacion entre el ID del valor maximo y minimo?
Mejor, crea un post con este tema.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 20:55.