Je utilise Oracle SQL, et j'essaie de réaliser une analyse historique des scores de test (pour visualiser les améliorations des scores de test sur une base mensuelle pour les individus). Tout d'abord, j'ai une table qui est une liste d'utilisateurs et des mois respectifs où ils sont actifs; cela ressemble à ceci :
TABLE1
________________________
UserName | ActiveDate
________________________
John Doe, 01-MAY-18
John Doe, 01-APR-18
John Doe, 01-MAR-18
Jane Doe, 01-APR-18
Jane Doe, 01-MAR-18
Jim Doe, 01-MAY-18
En plus de cela, j'ai une autre table qui répertorie les Scores de test, qui sont horodatés (vous pouvez refaire le test autant de fois que vous le souhaitez). Cela ressemble à ceci :
TABLE2
________________________________________
UserName | TestScore | EffectiveDate
________________________________________
John Doe, 87, 07-FEB-18
John Doe, 85, 14-FEB-18
John Doe, 90, 18-FEB-18
John Doe, 92, 02-MAR-18
John Doe, 91, 12-MAR-18
Jane Doe, 70, 01-FEB-18
Jane Doe, 72, 02-FEB-18
Jane Doe, 78, 18-FEB-18
Jane Doe, 77, 06-MAR-18
Jane Doe, 81, 18-MAR-18
Jim Doe, 50, 03-MAR-18
Jim Doe, 48, 23-MAR-18
Jim Doe, 58, 08-APR-18
Pour chaque ligne dans la première table (tous les paires UserName | ActiveDate sont distincts), je voudrais sélectionner le TestScore le plus récent de Table2 où la EffectiveDate est antérieure à l'ActiveDate
Donc j'espère obtenir quelque chose comme ceci
UserName | ActiveDate | TestScore le plus récent avant ActiveDate
______________________________________
John Doe, 01-MAY-18, 91
John Doe, 01-APR-18, 91
John Doe, 01-MAR-18, 90
Jane Doe, 01-APR-18, 81
Jane Doe, 01-MAR-18, 78
Jim Doe, 01-MAY-18, 58
J'ai essayé de faire fonctionner cela en JOIGNANT Table1 à Table2 sur UserName, où EffectiveDate < ActiveDate, mais je n'arrive pas à trouver la déclaration SQL dont j'ai besoin pour SÉLECTIONNER * de Table2 où EffectiveDate < ActiveDate, mais j'ai du mal à trouver cela sur une base "par ligne"...
Merci pour tous les conseils à l'avance. C'est ma première publication sur StackOverflow, donc j'espère avoir posé correctement cette question!
Éditer: Merci à tous pour l'aide, je pense avoir tout ce dont j'ai besoin pour poursuivre mon projet maintenant. Je vais m'assurer d'apporter quelques améliorations à ma publication la prochaine fois que je poserai une question ici sur SO.