J'ai 2 tables. pour cet exemple, je n'utiliserai qu'un seul enregistrement d'utilisateur. La première table a le nom d'utilisateur et une date d'évaluation en tant que telle:SQL Server 2005 - Comment prendre un enregistrement à partir d'une table et faire une boucle dans une autre table à la recherche de correspondance
USER EVALDATE
--------------
bobr 6/7/2010
bobr 9/20/2010
bobr 9/21/2010
Le tableau ci-dessus doit être joint contre cette table d'historique de l'utilisateur, qui a l'histoire de l'ID de et les dates auxquelles ils étaient en cours de validité, à chercher un match (la date NULL signifie en cours):
USER STARTDATE ENDDATE
----------------------------
bobr 2/20/2006 4/18/2010
bobr2 4/19/2010 9/7/2010
bobr 9/8/2010 null
ce que je suis en train de faire dans SQL Server 2005 est de prendre le premier enregistrement de la première table, en boucle à travers la deuxième table et quand (si) EVALDATE est dans l'une de ces plages de dates et les ID correspondent, puis marque cet enregistrement de la première table comme valide. Le code actuel extrait l'enregistrement de la première table et s'exécute sur toutes les lignes de la deuxième table et extrait un enregistrement pour chaque evaldate invalide, de sorte qu'il extrait un enregistrement lorsqu'il est joint à la seconde table car l'evaldate n'est pas entre les dates du premier enregistrement sur la table d'historique, même si l'enregistrement est correct car l'evaldate est entre les dates de début et de fin du troisième enregistrement dans la table d'historique.
J'espère que cela a du sens! Dans quelque chose comme SAS, je peux créer un tableau et faire une boucle en vérifiant chaque enregistrement de la table d'historique. Comment est-ce que je fais cela en SQL? Ce que j'essayais de faire était juste de mettre à jour la première table avec un drapeau si les dates des enregistrements ne sont pas valides. Des idées? Merci!!!
Cela fonctionne! J'ai ajouté une instruction AND dans la clause where pour vérifier que les userids correspondent et qu'il semble faire ce que j'ai besoin de faire. Cela semble si simple mais je ne pouvais pas arriver à ça! Merci Brad, je l'apprécie vraiment. – ramos