SQL Server Select distinct

Je veux écrire une requête comme celle-ci:

Pour une table contenant ces colonnes: ColA ColB ColC, ColD

select le premier (ColA, ColB, ColC, ColD) distinct (ColB, ColC) de l'ordre du tableau par ColD

La requête est supposée ordonner la table par ColD, puis regrouper les résultats par la combinaison de ColB et ColC (ils peuvent avoir des types de données différents) et renvoie les premières lignes (avec toutes les colonnes de la table) dans les groupes.

Comment est-ce possible dans MS SQL Server 2005?

On dirait que vous voulez «max par groupe».

L'une des solutions consiste à utiliser la fonction de fenêtrage ROW_NUMBER pour numéroter les lignes de chaque groupe, puis à sélectionner uniquement ces lignes avec le numéro de ligne 1:

SELECT ColA, ColB, ColC, ColD FROM ( SELECT ColA, ColB, ColC, ColD, ROW_NUMBER(PARTITION BY ColB, ColC ORDER BY ColD) AS rn FROM table1 ) T1 WHERE rn = 1