Bonjour,
J'ai rédigé une requête dans laquelle je fais appel à une sous-requête correlée dans la clause FROM et j'ai un message d'erreur m'indiquant que la colonne utilisée provenant de la requête parent est introuvable, et je n'arrive pas à en déterminer la cause, ni à trouver une syntaxe alternative. Je fais donc appel à vos connaissances.
Voici le problème.
Je dois sélectionner, pour chaque entrée d'une table CSP (condition spéciale permanente), le tarif d'achat qui était en vigueur au moment de sa création.
Chaque tarif est daté et propre à un article.
L'idée est d'obtenir le tarif dont la date de création est la plus proche et inférieure ou égale à la date de création de chaque CSP.
Et voici la requête (largement simplifiée pour l'exemple)
Le message d'erreur est le suivant : "La colonne ou la variable globale CSDTDB est introuvable."
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 SELECT CSP.CSCODE, -- Code Client CSP.CSART, -- Code Article CSP.CSDTDB, -- Date début CSP CSP.CSDTFN, -- Date fin CSP CSP.CSPRX, -- Prix de la CSP T1.TADATE, -- Date tarif T1.TAPRR -- Tarif achat FROM GIAM10.CSP CSP INNER JOIN ( SELECT TARIF.TAART, MAX(TARIF.TADATE) AS MAXDATE FROM GIAM95.TARIF TARIF WHERE TARIF.TADATE <= CSP.CSDTDB GROUP BY TARIF.TAART) T2 ON CSP.CSART = T2.TAART INNER JOIN GIAM95.TARIF T1 ON (T1.TAART = T2.TAART AND T1.TADATE = T2.MAXDATE)
A noter que si je remplace CSP.CSDTDB dans la sous-requête T2 par une date fixe, la requête s'exécute bien.
Pouvez-vous m'aider ?
Je vous remercie.
Partager