À OK alors oui c'est plus simple :
Voici une idée de solution, pas la plus éléguante mais assez directe :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| public function CalculerAMJ(prmNbJour as long) as string
dim result as string
dim nbAnnee as long
dim nbMois as long
dim nbJour as long
dim nbJourRestant as long
nbJourRestant=prmNbJour
nbAnnee=int(nbJourRestant/(30 * 12))
nbJourRestant=nbJourRestant - ((30 * 12) * nbAnnee)
nbMois=int(nbJourRestant/30)
nbJourRestant=nbJourRestant - (30 * nbMois)
nbJour=nbJourRestant
result=nbAnnee & " an(s) " & nbMois & " mois " & nbJour & " jour(s)"
CalculerAMJ = result
end function |
Après tu utilises la fonction comme une autre dans ta requête.
Un truc du genre :
1 2
| select nom, PRENOM, round(DATEDEP-DATEREC), CalculerAMJ(round(DATEDEP-DATEREC)) as AMJ from serveur where DATEDEP is not null
union select nom, PRENOM, round(sysdate-DATEREC), CalculerAMJ(round(sysdate-DATEREC)) from serveur where DATEDEP is null; |
Aussi pour les requêtes Union, je te suggères de procéder ainsi :
req1 :
select nom, PRENOM, round(DATEDEP-DATEREC), CalculerAMJ(round(DATEDEP-DATEREC)) as AMJ from serveur where DATEDEP is not null
req2 :
select nom, PRENOM, round(sysdate-DATEREC), CalculerAMJ(round(sysdate-DATEREC)) from serveur where DATEDEP is null
reqUnion :
1 2
| select req1.* from req1
union all select req2.* from req2 |
Je trouve cela est plus facile à mettre au point et à lire quand la requête devient complexe.
A+
Partager