Sql Query pour returnner 3 lignes pour chaque input avec la même valeur dans la colonne?

OK, je suis un peu outta pratique sur les requêtes SQL ici, j'ai une table avec des milliers d'inputs. Chaque ligne a un identifiant unique mais il existe une colonne nommée EquipmentId qui n'est pas unique et qui serait présente sur plusieurs lignes. Je veux returnner 3 lignes pour chaque EquipmentId et s'il y a less de 3 inputs pour un EquipmentID, je les veux aussi. ….. a du sens? Merci d'avance.

Utiliser ROW_NUMBER() + CTE

 ;WITH CTE AS( SELECT *, ROW_NUMBER() OVER ( PARTITION BY EquipmentId ORDER BY ID ) RN FROM TableName ) SELECT * FROM CTE WHERE RN <= 3 ORDER BY EquipmentId 

En utilisant des sous-requêtes, vous pouvez le faire comme ceci:

 SELECT * FROM (SELECT *, Rank() OVER (PARTITION BY equipmentid ORDER BY ID) Rank FROM stack) AS a WHERE rn <= 3