Bonjour à tous,
Je cherche une solution au problème suivant:
Je dispose d'une table de faits dans laquelle nous enregistrons la liste des prix relevés pour un client C, un produit P et un jour J. Donc la structure de ma table de faits ressemble à ça :
Produit / Client / Jour / Prix
exemple
Record_ID Client Produit Jour Prix
1 C1 P1 27/02/2017 1.62
2 C1 P1 09/02/2017 1.62
3 C1 P1 02/02/2017 1.62
4 C2 P1 17/02/2017 1.56
5 C2 P1 03/02/2017 1.52
6 C3 P2 27/02/2017 1.56
7 C3 P2 24/02/2017 1.56
8 C3 P2 14/02/2017 1.56
9 C3 P2 06/02/2017 1.55
10 C2 P2 07/02/2017 1.52
Je souhaiterais disposer d'une mesure [AVG Last PVC] qui m'affiche le prix moyen uniquement sur les derniers relevés (dans mon exemple uniquement, sur les enregistrements 1, 4, 6 et 10). L'utilisateur veut pouvoir sélectionner sur une plage de date qui ne correspond pas forcément à un niveau de mon axe temps (exemple de sélection : du 12 février au 28 mars).
L'autre possibilité serait de calculer dynamiquement une mesure qui prendrait la valeur 1 sur les derniers relevés et 0 sur les autres.
En SQL, cela consisterait à calculer un RANG du type ROW_NUMBER() OVER (PARTITION BY [Produit], [Client] ORDER BY [Date] DESC) et ne retenir que RANG = 1.
J'espère que ma demande est assez claire et je remercie par avance tous ceux qui pourraient me donner quelques pistes.
Dom.
Partager