sql >> Base de Datos >  >> RDS >> Sqlserver

SQL:restrinja la cantidad de filas devueltas en función de un recuento de filas

Usa el ROW_NUMBER() función para esto:

SELECT *
FROM (select *,ROW_NUMBER() OVER (PARTITION BY group_id ORDER BY item_id) as RowRank 
      from items_in_groups
      )sub
WHERE RowRank <=2

Demostración:SQL Fiddle

El ROW_NUMBER() función asigna un número a cada fila. PARTITION BY es opcional, pero se usa para comenzar la numeración de cada valor en ese grupo, es decir:si PARTITION BY group_id luego para cada group_id único valor la numeración comenzaría de nuevo en 1. ORDER BY por supuesto, se usa para definir cómo debe ir el conteo, y se requiere en el ROW_NUMBER() función.