Seules les valeurs distinctes après un groupe par dans SQL Server 2014

Voici l'exemple des données:

ID Value NumPeriod ------------------------ 1681642 596.8 2 1681642 596.8 3 1681663 445.4 2 1681663 445.4 3 1681688 461.9 3 1681707 282.2 3 1681724 407.1 3 1681743 467 2 1681743 467 3 1681767 502 3 

Je veux regrouper par le [ID] et prendre seulement les valeurs distinctes de [Valeur] dans chaque groupe et prendre la "première" distincte [Valeur] selon [NumPeriod]. Donc, le résultat devrait ressembler à ceci:

  ID Value NumPeriod ------------------------- 1681642 596.8 2 1681663 445.4 2 1681688 461.9 3 1681707 282.2 3 1681724 407.1 3 1681743 467 2 1681767 502 3 

Donc, je pensais que quelque chose comme ça fonctionnerait, mais pas de chance:

 select ID, distinct(Value), NumPeriod from MyTable group by ID, Value, NumPeriod order by ID, NumPeriod 

Toute aide serait appréciée. Merci!

Vous pouvez utiliser une fonction de classment et un CTE:

 WITH CTE AS ( SELECT ID, Value, NumPeriod, RN = ROW_NUMBER() OVER (PARTITION BY ID ORDER BY NumPeriod ASC) FROM MyTable ) SELECT ID, Value, NumPeriod FROM CTE WHERE RN = 1 ORDER BY ID, Value 

Je pense que tout ce que vous devez changer est ce que vous appelez distinct. Essaye ça:

 select distinct ID, Value, NumPeriod from MyTable group by ID, Value, NumPeriod order by ID, NumPeriod