Bonjour à tous,
J'ai un soucis pour réaliser la requête que je veux.
Il s'agit d'une application de facturation.
Un facture est attribuée à un site (dans le sens "établissement") et peut soit concerner ce site soit ses "sous-sites" (s'il y en a).
Dans ce cas, la facture est enregistrée une première fois pour le site, puis détaillée pour les sous-sites.
Certaines factures peuvent ne pas être détaillée.
La relation Site/Sous-site n'est référencée nulle part dans la base.
Voici les tables sur lesquelles je travail :
Sites : IDSite,NomSite
Factures : NumeFact,DateFact,#SiteFact,MontantFact
LignesFactures : #FactLF, LigneLF,MontantLF
DetailsFactures : #FactDetail,#SiteDetail
LignesDetailsFactures : #FactureLD,#SiteLD,LigneLD,MontantLD
Je souhaiterais réaliser une requête permettant de faire la somme des montants groupés par site et par année avec pour résultat :
NomSite | Année | Montant
Donc, si la facture a été décomposée en sous-site, je prend SiteDetail et MontantLD , sinon je prend SiteFact et MontantLF
Pour l'instant j'ai réalisé cette requête :
Elle fonctionne bien, mais j'obtient le Numéro de site alors que je souhaite faire apparaître le nom du site.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SELECT NumSite,Year(DateFact), Sum(Montant) FROM ( SELECT DISTINCT IIf(IsNull(SiteDetail),SiteFact,SiteDetail) As NumSite, DateFact, IIf(IsNull(MontantLD),MontantLF,MontantLD) as Montant FROM (((Factures AS F LEFT JOIN LignesFactures As I ON I.FactLF = F.NumeFact) LEFT JOIN LignesDetailsFactures AS L ON F.NumeFact=L.FactLD) LEFT JOIN DetailsFactures AS D ON D.FactDetail= F.NumeFact ) GROUP BY NumSite,Year(datefact)
Je ne trouve pas où réaliser la jointure à cause des conditionnelles dans le SELECT imbriqué.
Si quelqu'un à une idée, je suis preneur !
En espérant avoir été à peu près compréhensible.
Merci.
Partager