2010-02-22 2 views
1

J'ai une base de données SQL Server 2008 avec des disques comme les suivantsPrendre seulement 1 rang d'un groupe de lignes partageant la même valeur champ

001 CAT 1 2 3 
002 DOG 3 3 1 
003 DOG 2 1 1 
004 DOG 2 1 3 
005 CAT 1 3 4 

Je veux prendre 1 ligne pour chaque valeur unique dans la colonne 2 (chat et chien)

donc ce me obtenir (une réponse possible):

001 CAT 1 2 3 
002 DOG 3 3 1 

colonne 1 est le PK et est une chaîne. La colonne 2 est une chaîne

Les colonnes 3-5 sont juste là pour indiquer qu'il y a d'autres champs variables dont j'ai besoin dans le résultat final.

Répondre

5
SELECT t1.* 
FROM YourTable t1 
    JOIN 
    (SELECT MIN(Col1) AS FirstId 
    FROM YourTable GROUP BY Col2) x ON t1.Col1 = x.FirstId 
+0

Ceci est vraiment proche de ce que j'essayais - sauf le vôtre est correct. – sylvanaar

+0

+1, je pensais ROW_NUMBER, mais c'est mieux –

0
SELECT pk, DISTINCT pet, col3, col4, col5 FROM myPetsTable 

Cela fonctionnerait-il? Prendre un tir dans le noir ici :)

+2

Non, il serait bombarder sur le distinct. L'ordre compte. –

+0

Pour autant que je sache que ce n'est pas valide SQL – sylvanaar

+1

Dr. Zim est correct - 'DISTINCT' est appliqué à toutes les colonnes dans la clause' SELECT', pas sélectivement. –

Questions connexes