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

min en gruop by

Estas en el tema de min en gruop by en el foro de SQL Server en Foros del Web. hola, si me pueden ayudar con la siguiente cuestión ... tengo una tabla ADEUDOS con los campos <clave>,<cuota>,<monto> 575, 2, 35.00 575, 3, 23.00 575, ...
  #1 (permalink)  
Antiguo 30/07/2010, 13:26
Avatar de otreblanc  
Fecha de Ingreso: mayo-2005
Ubicación: Chiapas, la última frontera...
Mensajes: 73
Antigüedad: 19 años
Puntos: 0
min en gruop by

hola, si me pueden ayudar con la siguiente cuestión ...

tengo una tabla ADEUDOS con los campos
<clave>,<cuota>,<monto>
575, 2, 35.00
575, 3, 23.00
575, 4, 75.00
248, 1, 85.00
248, 2, 49.00

hago un SELECT CON GROUP BY para obtener min(<cuota>) de cada <clave>
hasta aquí todo normal y básico ... jejeje

Me gustaría saber alguna forma de obtener también su <monto> de esa min(<cuota>), es decir mi resultado debe dar esto:

<clave>,<cuota>,<monto>
575, 2, 35.00
248, 1, 85.00


A estas alturas, yo creo que muchos han tenido esta misma necesidad

Estoy usando sql server 2008, por si conocen alguna nueva forma implementada

muchas gracias por su apoyo....
  #2 (permalink)  
Antiguo 02/08/2010, 10:10
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: min en gruop by

¿Esto es lo que buscas?


Código SQL:
Ver original
  1. CREATE TABLE #tutabla (clave INT, cuota INT, monto money)
  2.  
  3.  
  4. INSERT INTO #tutabla (clave, cuota, monto) VALUES(575, 2, 35.00)
  5. INSERT INTO #tutabla (clave, cuota, monto) VALUES(575, 3, 23.00)
  6. INSERT INTO #tutabla (clave, cuota, monto) VALUES(575, 4, 75.00)
  7. INSERT INTO #tutabla (clave, cuota, monto) VALUES(248, 1, 85.00)
  8. INSERT INTO #tutabla (clave, cuota, monto) VALUES(248, 2, 49.00)
  9.  
  10.  
  11. SELECT a.* FROM #tutabla a INNER JOIN (
  12.  
  13. SELECT clave, MIN(cuota) AS cuota FROM #tutabla GROUP BY clave) AS b
  14. ON a.clave = b.clave
  15. AND a.cuota = b.cuota
  16.  
  17. clave cuota monto
  18. 248 1   85.00
  19. 575 2   35.00
  #3 (permalink)  
Antiguo 02/08/2010, 17:35
Avatar de otreblanc  
Fecha de Ingreso: mayo-2005
Ubicación: Chiapas, la última frontera...
Mensajes: 73
Antigüedad: 19 años
Puntos: 0
Respuesta: min en gruop by

muchas gracias iislas...

tenía en mente las subconsultas (de hecho así lo resolví)... pero quería saber si había alguna otra forma...
  #4 (permalink)  
Antiguo 02/08/2010, 19:27
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: min en gruop by

Bueno, no lo probe con EXISTS, pero debe funcionar de igual forma....
  #5 (permalink)  
Antiguo 02/08/2010, 20:43
 
Fecha de Ingreso: enero-2010
Ubicación: SJM Lima - Peru
Mensajes: 55
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: min en gruop by

Cita:
Iniciado por otreblanc Ver Mensaje
muchas gracias iislas...

tenía en mente las subconsultas (de hecho así lo resolví)... pero quería saber si había alguna otra forma...
Hola
Creo que sin una subconsulta seria imposible
pero lo hize fuera de un inner join pero si la subconsulta como WHERE concatenado los valores y comprandolos en un IN

Código SQL:
Ver original
  1. SELECT clave, cuota, Monto FROM adeudos
  2.     WHERE CONVERT(VARCHAR(5),clave) +'-'+ CONVERT(VARCHAR(5),cuota)
  3.     IN  (
  4.         SELECT CONVERT(VARCHAR(5),clave) +'-'+ CONVERT(VARCHAR(5),MIN(cuota)) FROM adeudos  GROUP BY clave
  5.         )
  6.     ORDER BY 1

al final todos los caminos conducen a un mismo resultado aunque parezca algo anti-estetico.
Yo hubiera preferido hacer un procedimiento almacenado.

www.bitxense.com.pe | Soluciones Informaticas S.A.C. - [email protected]
Cualquier duda aqui esta mi correo [email protected] Lima-Peru
  #6 (permalink)  
Antiguo 02/08/2010, 21:13
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: min en gruop by

¿Crees realmente que el IN(CODIGO SQL), sea eficiente?

Este, se deja en ULTIMO LUGAR como opcion, es mejor (probado con millones de registros), el EXISTS o NOT EXISTS.

Etiquetas: min
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




La zona horaria es GMT -6. Ahora son las 23:17.