Bases de Datos > SQL Server

 Consulta para obtener el pago mas retrasado

<< < (2/2)

DiabloRojo:
Qué tal gabio2,

Es decir, debo incluir en la cláusula GROUP BY cualquier campo que NO esté dentro de una función de agregado (min, max, sum...) y que aparezca después del SELECT.

Por otro lado, mi confusión parte de que hice la prueba en mysql y allí sí funciona  de la manera que sugerí :think:. pero revisando en sql server me doy cuenta de que funciona exactamente como tu propusiste.

Otra forma pudo haber sido (y esta vez sí en sql server):


--- Código: SQL ---SELECT contrato_id, semana, interes, abono, iva, fecha_pago, pagadoFROM creditos_abonos ca1WHERE semana IN(SELECT MIN(semana) AS semana FROM creditos_abonos ca2 WHERE pagado = 0 AND ca1.contrato_id = ca2.contrato_id GROUP BY contrato_id);
Aunque creo que la manera más eficiente de realizar la consulta es la de gabio2.

Saludos

PS: Por cierto, recomiendo http://sqlfiddle.com/ para probar consultas contra mysql, postgre y sql server.

gabio2:
Muy buena tú observación DiabloRojo, de igual forma probé y efectivamente en MySQL no tuve problemas, un caso más para la araña....

Por cierto igual tú sentencia utilizando el IN en el WHERE, quedó bastante bien, intente probar la efectividad de ambas consultas midiendo el tiempo de respuesta, para ello ingrese 100 mil registros a la tabla, sin embargo ambas siguieron dando exactamente el mismo tiempo de respuesta y el mismo número de registros, por lo cuál puedo decir que ambas son igual de eficientes.

Saludos!

Navegación

[0] Índice de Mensajes

[*] Página Anterior

Ir a la versión completa