Comment "COMPTER (DISTINCT (col1, col2))"

J'ai donc une table avec trois colonnes – col1 , col2 et col3 . J'ai besoin de sélectionner les valeurs de col1 qui partagent des lignes avec une seule combinaison de col2 et col3 . Dans le monde idéal, j'écrirais ceci:

 SELECT col1 FROM table GROUP BY col1 HAVING COUNT(DISTINCT(col2, col3)) = 1 

Comment faire cela dans le monde réel?

Jusqu'à présent, j'ai deux solutions – grouper par col1 et col2 et par col1 et col3 ils joignent les résultats; ou groupe par tous les trois, puis le grouper par col1 . Malheureusement, je reçois (très) différents counts.

La database est sur SQL Server 2005.

 SELECT col1 FROM table GROUP BY col1 HAVING MAX(col2) = MIN(col2) AND MAX(col3) = MIN(col3) 

Plus complexe:

 SELECT col1 FROM ( SELECT col1, ROW_NUMBER() OVER (PARTITION BY col1 ORDER BY col2, col3) as rn FROM table ) T GROUP BY col1 HAVING MAX(rn) = 1 
 select * from mycols where col1 in ( select max(col1) from mycols group by col2, col3 having count(col1)=1 )