j'ai une table avec quelque chose comme ce qui suit:Obtenir des résultats filtrés avec sous-requête
ID Name Color
------------
1 Bob Blue
2 John Yellow
1 Bob Green
3 Sara Red
3 Sara Green
Ce que je voudrais faire est de retourner une liste filtrée des résultats dans lequel les données suivantes sont renvoyées:
ID Name Color
------------
1 Bob Blue
2 John Yellow
3 Sara Red
Par exemple, je voudrais retourner 1 ligne par utilisateur. (Je ne me dérange pas quelle ligne est retournée pour l'utilisateur particulier - je ai juste besoin que [ID] est unique.) J'ai déjà quelque chose qui fonctionne mais est vraiment lent où je crée une table temporaire en ajoutant tous les ID, puis en utilisant un « OUTER APPLY » sélectionner le top 1 de la même table, à savoir
CREATE TABLE #tb
(
[ID] [int]
)
INSERT INTO #tb
select distinct [ID] from MyTable
select
T1.[ID],
T2.[Name],
T2.Color
from
#tb T1
OUTER APPLY
(
SELECT TOP 1 * FROM MyTable T2 WHERE T2.[ID] = T1.[ID]
) AS V2
DROP TABLE #tb
quelqu'un peut-il suggérer comment je peux l'améliorer?
Merci
J'ai utilisé le premier exemple - fantastique !! Merci. – jose