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