Supprimer les duplicates par colonnes keys dans SQL Server

Dans SAS, si je veux supprimer une donnée sortingée avec des duplicates, je peux utiliser l'option proc sort avec noduprecs . Et l'option nodupkey peut supprimer les duplicates par certaines colonnes keys

par exemple

 proc sort data=HAVE out=WANT nodupkey;by var1, var2;run; 

Dans SQL Server, je sais que select distinct * peut produire quelque chose comme proc sort noduprecs . Mais comment générer une sortie comme celle proc sort nodupkey;by var1, var2 fait dans SAS? (returnne la première valeur si des duplicates existent)

MODIFIER

En utilisant la fonction de résumé comme max , les duplicates peuvent être supprimés tandis que le maximum de ces colonnes non spécifiées dans une déclaration group by sera returnné.

 select key1, max(var1) as var1, key2, key3, max(var2) as var2, max(var3) as var3 from #HAVE group by key1, key2, key3 

Mais ce que je veux c'est returnner la première combinaison de (var1, var2, var3).

Donné

 key1 var1 key2 key3 var2 var3 K1 20 K2 K3 30 BB K1 10 K2 K3 40 AA 

La sortie idéale est

 key1 var1 key2 key3 var2 var3 K1 20 K2 K3 30 BB 

ne pas

 key1 var1 key2 key3 var2 var3 K1 20 K2 K3 40 AA 

Selon votre commentaire vous avez un horodatage, en utilisant cet horodatage, il est possible de choisir la "première" combinaison de key1, key2, key3

Voici une solution pour choisir l'set de données earliers pour chaque combinaison de key1, key2, key3

 ;WITH CTE AS ( SELECT key1, var1, key2, key3, var2, var3, row_number() over (partition by key1, key2, key3 order by timestamp) rn FROM #HAVE ) SELECT key1, var1, key2, key3, var2, var3 FROM CTE WHERE rn = 1