Essayer de joindre des tables en utilisant des champs datetime

J'ai une requête qui renvoie un champ datetime et plusieurs autres champs avec lui. Je veux append un champ d'une autre table qui a également un champ datetime. Je ne peux pas joindre à l'intérieur ces deux tables car les champs datetime ne sont pas liés, donc je veux plutôt join la première ligne de la deuxième table qui se produit juste après le champ datetime dans la première table. Voici une pseudo-requête non-fonctionnelle de ce que j'essaie de faire:

SELECT DISTINCT TripID AS 'ID', @CURRDATE = CurrDate, @GROUPID = GroupID, UserEmail AS 'User', RouteID AS 'Route', (SELECT TOP (1) PatternNum FROM tblMOEHistory WHERE (GroupID = @GROUPID) AND (TimeStamp > @CURRDATE) ORDER BY TimeStamp) AS 'Pattern' FROM tblMobileTrips ORDER BY 'Time'; 

Je ne suis pas sûr s'il y a un moyen de le faire mais j'espérais que quelqu'un pourrait m'aider.

Vous pouvez en effet utiliser une jointure … donnez un coup de feu:

 SELECT DISTINCT a.TripID AS 'ID', a.CurrDate, a.GroupID, a.UserEmail AS 'User', a.RouteID AS Route', b.PatternNum from someTable a join tblMOEHistory b on a.GroupID = b.GroupID and b.TimeStamp = (select MIN(TimeStamp) from tblMOEHistory where GroupID = a.GroupID and TimeStamp > a.CurrDate) 

En utilisant CROSS APPLY, vous pouvez "paramétrer" l'appel à tblMOEHistory (que je suppose que vous essayiez avec @GROUPID et @CURRDATE par ligne)

Quelque chose comme:

 SELECT DISTINCT M.TripID AS 'ID', M.CurrDate, M.GroupID, M.UserEmail AS 'User', M.RouteID AS 'Route', MH.PatternNum AS 'Pattern' FROM tblMobileTrips M CROSS APPLY (SELECT TOP (1) PatternNum FROM tblMOEHistory MH WHERE MH.GroupID = M.GroupID AND MH.TimeStamp > M.CurrDate ORDER BY TimeStamp ) MH ORDER BY 'Time';