2010-06-21 4 views
0

Pas même comment mot cette question: J'ai une table qui ressemble à ceci:
code SQL pour sélectionner pour sélectionner la colonne unique et correspondre à la ligne sur une autre colonne

select * from tblServiceUsers Classez par ServiceID

0 B88230BB-4943-4C10-AB0E-8ABB88A357A3 
0 5653C943-7F9A-4746-B2A3-1160E9204A7E 
0 08678EE7-49A7-4F63-BC39-CFCCE2C9AD65 
1 B88230BB-4943-4C10-AB0E-8ABB88A357A3 
1 5653C943-7F9A-4746-B2A3-1160E9204A7E 
2 B88230BB-4943-4C10-AB0E-8ABB88A357A3 
2 5653C943-7F9A-4746-B2A3-1160E9204A7E 



et je besoin d'une requête qui ne retourne que le haut (ou première) userid qui correspond à une ServiceId. Par exemple, je veux juste que 1 UserID soit affiché pour chaque ServiceID. Tels que les éléments suivants:

0 B88230BB-4943-4C10-AB0E-8ABB88A357A3 
1 B88230BB-4943-4C10-AB0E-8ABB88A357A3 
2 B88230BB-4943-4C10-AB0E-8ABB88A357A3 

+0

Veuillez essayer de formater ceci lisiblement, en utilisant le formateur de code. – MJB

Répondre

1

Vous ne dites pas quelle version de SQL Server, il est, mais pour MS SQL Server de 2005 que vous pouvez faire quelque chose comme:

Select SecID, ServiceID, UserID from 
(
    select ROW_NUMBER() OVER (PARTITION BY ServiceID ORDER BY Secid) AS row_number, 
    SecID, 
    ServiceID, 
    UserID 
    From tblSecServiceUsers 
) 
tempTable 
where row_number = 1 
+0

Oui, c'est en 2005. J'ai essayé ça et ça marche super! Merci. –

0

Pourquoi ne pas utiliser TOP 1 et une clause ORDER BY?

+0

top 1 ne retournera qu'une ligne. J'ai des colonnes ServiceID et UserID. Il y a des ServiceID qui ont jusqu'à 5 userid, mais je veux seulement afficher un userid par serviceid unique. –

0

On dirait que vous n'êtes pas trop pris la peine que vous userId juste vouloir quelqu'un? Si c'est le cas, cela fonctionnerait.

SELECT MAX(UserID) AS UserID, ServiceID 
FROM tblServiceUsers 
GROUP BY ServiceID 
ORDER BY ServiceID 
Questions connexes