ROW_NUMBER() OVER PARTITION BY MULTIPLE ORDER BY
Bonjour,
Je dois extraire le dernier prix connu pour tous les articles qui n'ont pas de prix valide à la date du jour.
Je suis donc parti sur un row-number, partition sur le code article, et le order sur la date de fin validité tarif déccroissant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| SELECT
SOCIETE, ARTICLE, PRIXOLD
FROM
(SELECT
A.SOCIETE_0 AS SOCIETE,
A.ARTICLE_0 AS ARTICLE,
A.PRI_0 AS PRIXOLD,
ROW_NUMBER() OVER (PARTITION BY A.ARTICLE_0 ORDER BY A.ENDDAT_0 DESC) as PRIXOLDRANK
FROM
TARIF A
WHERE
TRUNC(SYSDATE) > TRUNC(A.ENDDAT_0))
WHERE PRIXOLDRANK = 1 |
Cela marche bien, un soucis que je n'avais pas envisager et que je ne sais pas résoudre c'est que je peux avoir pour un article plusieurs tarifs invalide avec la même date de fin de validité (tarif à seuil), et dans ce cas la je suis sensé ressortir le tarif le plus bas. J'ai essayé avec un MIN, message d'erreur. Inclure le prix dans le order by mais du coup ça me fait sauter la date..
Bref je sèche,
Si quelqu'un à une idée pour résoudre monn problème ça serait vraiment sympa :calim2:.
Merci par avance,
pyth