Tema: SQL Complejo
Ver Mensaje Individual
  #5 (permalink)  
Antiguo 05/09/2012, 17:09
Avatar de matanga
matanga
 
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 17 años, 1 mes
Puntos: 85
Respuesta: SQL Complejo

Suponiendo que la tabla Cuentas tiene los campos IdPersona, IdCuenta y Saldo, y suponiendo que estás con Oracle 9i o superior, puedes obtener los 3 mayores saldos por persona con la función RANK(), por ejemplo:

Código:
select
 IdPersona, Saldo 
from
 (select IdPersona, 
             Saldo, 
             rank() over (partition by IdPersona order by Saldo) r 
   from Cuentas)
where r <=3
/
Y después solo quedaría hacer un pivot para visualizar los registros como columnas y un join con la tabla Personas para obtener el nombre.

Saludos