Bonjour,
Voilà, j'ai créé dans ma base une belle fonction get_Total_Cost(Id, ReferenceYear, Period, Currency) qui me permet de retourner le coût total d'un investissement.
La fonction s'appuie sur 2 tables:
Investment:Id(PK), Name, Scope
Investment_Cost: Id(PK, FK Investment), Reference_Year, For_Year, Period, amount_Before, amount_Actual, Amount_After.
(La deuxieme table est un poil toute pourrie mais je n'ai pas le choix, je dois faire avec (trop couteux de changer))
Par exemple, j'ai dans ma base:
- L'investissement 125, Construction d'un batiment, Modernisation du site Polonais
- les enregistrements suivant dans Investment_Cost:
* 125, 2006, 2006, Budget, 3, 50, -1 (3k Sloty ont déjà été dépensé en 2005, pour le budget 2007 (saisi en 2006), 50k Sloty vont être dépensé dans l'année 2006)
* 125, 2006, 2007, Budget, -1, -1, 300 (300k Sloty vont être dépensé dans l'année 2007)
* 125, 2006, 2008, Budget, -1, -1, 0 (0 k Sloty vont être dépensé en 2008)
La fonction me retourne, si j'appelle "get_Total_Cost(125, '2006', 'Budget', 'LOC')", 3+50+300 k Sloty. Si j'appelle "get_Total_Cost(125, '2006', 'Budget', 'EUR')", la fonction retourne 3/tx_conversion_reel_2005 + 50/tx_conversion_estime_2006 + 300/tx_conversion_budget_2007+0//tx_conversion_budget_2007 k€
Au niveau Mapping, rien de bien méchant:
- Classe Investment, 1 attribut par champ, pas de set
- Classe InvCost, 1 attribut par champ, pas de set, composite Id (qui contient les années)
J'aimerais récupéré tous mes investissment_costs triés par le total cost, comme je n'ai pas envie de flinguer les performances, je souhaite récupérer directement mes résultats triés, typiquement en SQL:
Select Id_Investment, Reference_Year, For_Year, Period, Amount_Before, Amount_Actual, Amount_After, get_Total_Cost(Id_Investment, Reference_Year, Period, 'EUR') Total_Cost
From Inv_Cost
where Reference_Year = :MyYear and Period = :MyPeriod
Order by Total_Cost desc, Id_Investment Asc;
Comment puis-je faire pour récupérer une liste de beaux InvestmentCost triés comme dans le résultat de ma requête.
Merci
Marcel
|