Ver Mensaje Individual
  #6 (permalink)  
Antiguo 08/04/2010, 21:23
Avatar de Beakdan
Beakdan
 
Fecha de Ingreso: diciembre-2001
Ubicación: Monterrey, Nuevo León
Mensajes: 433
Antigüedad: 22 años, 10 meses
Puntos: 7
Respuesta: obtener el primero y el segundo de cada grupo

Flaviovich, en la última consulta publicada, antes de agrupar el predicado siempre es true. Pero además, al agrupar debe saltar un error ya que clase y cant no tienen una función de agregado aplicada a dichas columnas.

Moron, no indicaste la versión de SQL Server que usas, pero si estás usando la 2005 o 2008, es muy fácil de solucionar tu problema.

Código:
SELECT        seq.grupo, seq.clase, seq.cant
FROM        (    
                SELECT        ROW_NUMBER() OVER(PARTITION BY grupo ORDER BY indice) AS seq
                            grupo, clase, cant
                FROM        tabla
            ) AS seq
WHERE        seq.seq <= 2;
También podrías usar:
Código:
SELECT        ref.grupo,
            lkp.clase,
            lkp.cant
FROM        (SELECT DISTINCT grupo FROM tabla) AS ref
            CROSS APPLY (
                SELECT    TOP 2
                        clase, cant
                FROM    tabla
                WHERE    grupo = ref.grupo
                ORDER BY indice
            ) lkp;
Saludos