2017-10-09 1 views
0

Je tente d'effectuer une jointure multi-table qui utilise le champ ScheduledObjectID commun. Je voudrais sélectionner plusieurs enregistrements d'une table basée sur le RunID max et UserDueDate. Toute aide serait grandement appréciée.SQL Server 2012, Sélection de deux enregistrements max puis joignant

données Exemple:

ScheduledObjectID RunID UserDueDate 
------------------------------------------------- 
123    1  2017-07-16 14:26:56.263 
123    2  2017-05-16 14:26:56.250 
123    3  2017-05-16 14:26:56.233 
456    9  2017-05-16 14:26:56.217 
456    10  2017-05-16 14:26:56.200 
456    11  2017-10-07 10:19:33.873 

souhaité rejoindre les données

ScheduledObjectID RunID UserDueDate 
------------------------------------------------- 
123    3  2017-05-16 14:26:56.233 
456    11  2017-10-07 10:19:33.873 
+0

Ajoutez votre requête en cours qui crée au-dessus des échantillons de données. –

Répondre

0

Pas besoin de se joindre, vous pouvez utiliser top 1 avec des liens

demo here

select top 1 with ties ScheduledObjectID, RunID, UserDueDate 
from 
#tmp 
order by 
row_number() over (Partition by ScheduledObjectID order by runid desc) 

Selon les commentaires que cela devrait fonctionner:

select * from t1 join 
(select ScheduledObjectID,max(runid) as runid,max(userduedate) as userduedate 
from t2 
groupe

par ScheduledObjectID ) t2 sur t1.somecol1 = t2.somecol

+0

Désolé, aurait dû mieux expliqué. Les données ci-dessus sont l'une des tables de jointure qui lie à d'autres données via la colonne ScheduledObjectID. – dbreienrk1

+0

S'il vous plaît vérifier la modification, si c'est ce que vous cherchez – TheGameiswar

+0

merci! ça a bien marché! – dbreienrk1