Bonjour,
Je vous explique mon problème, qui peut sembler simple, mais pour lequel je n'arrive pas à trouver la syntaxe exacte. Dans une table j'ai plusieurs enregistrements par idUsr avec un champ IsOpen qui peut être à 0 ou à 1. La date d'insertion des ligne est contenue dans le champs Dategen. Ce que je souhaite, c'est créer une requête qui pour pour chaque idusr :
-on prend les 15 derniers enregistrements
-et on compte le nombre de IsOpen.
J'ai essayé cette requête mais elle ne fonctionne pas pourtant tout me semble correct.
J'ai l'erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 SELECT A.IdUsr, COUNT(*) FROM D_ARCHID A INNER JOIN (SELECT TOP(15) * FROM D_ARCHID WHERE IdUsr = A.IdUsr ORDER BY DateGen DESC) B ON B.IdUsr = A.IdUsr WHERE B.IsOpen = 1 GROUP BY A.IdUsr
Pour moi tout me semble correct , la requête dans le INNER JOIN avec le filtre sur l'idusr provenant de la table sur laquelle on fait un group by devrait pour chaque idUsr me renvoyer les 15 derniers résultats (avec le order by dategen DESC)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Msg 4104, Level 16, State 1, Line 1 The multi-part identifier "A.IdUsr" could not be bound
J'ai l'impression que ce que je souhaite faire n'est pas possible et que je vais devoir passer par une table tempo . Vous en pensez quoi ?
Partager