Sous-requête corrélée, clause FROM et jointures
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)
Code:
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) |
Le message d'erreur est le suivant : "La colonne ou la variable globale CSDTDB est introuvable."
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.