Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

SQL - Restreindre le nombre de lignes renvoyées en fonction d'un nombre de lignes

Utilisez le ROW_NUMBER() fonction pour cela :

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

Démo :SQL Fiddle

Le ROW_NUMBER() La fonction attribue un numéro à chaque ligne. PARTITION BY est facultatif, mais utilisé pour recommencer la numérotation pour chaque valeur de ce groupe, c'est-à-dire :si vous PARTITION BY group_id puis pour chaque group_id unique value la numérotation recommencerait à 1. ORDER BY bien sûr est utilisé pour définir comment le comptage doit se dérouler, et est requis dans le ROW_NUMBER() fonction.