Bonjour,
J'ai un petit problème avec la requête suivante sous ORACLE 10 g :
Cela vient de la partie qui fait la somme avec fonction SUM.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 select cl.c_client, cl.l_client, f.c_fact, f.d_emission_fact, f.d_deb_factu, f.d_fin_fact, lf.c_id_fact, lf.l_volume_facture, sum(case lf.m_forfait when 0 then lf.m_prix_unit*lf.m_volume_facture else lf.m_forfait end) as s from ligne_facturation lf, composant c, facture f, engagement e, client cl where lf.l_volume_facture = c.l_composant and e.c_id_engag = f.c_id_engag and cl.c_id_client = e.c_id_client and lf.c_id_fact = f.c_id_fact and f.d_emission_fact >= '31/12/2008' group by cl.c_client, cl.l_client, f.c_fact, f.d_emission_fact, f.d_deb_factu, f.d_fin_fact, lf.c_id_fact, lf.l_volume_facture--, lf.m_volume_facture, lf.m_prix_unit order by f.c_fact
En raisonnant sur une facture f.c_fact j'ai par exemple le résultat suivant où la deuxième ligne est fausse :
La ligne "12/12/1 Composant1 157.5" est fausse.--------------------------------------------
C_FACT L_VOLUME_FACT S
12/12/1 Composant2 21.28
12/12/1 Composant1 157.5
12/12/1 Composant3 1.63
--------------------------------------------
Voici une vue sur la même facture sur la table LIGNE_FACTURATION :
---------------------------------------------------
L_VOLUME_FACTURE M_PRIX_UNIT M_VOLUME_FACTURE M_FORFAIT
Composant1 1.5 10 0
Composant2 1.52 14 0
Composant1 1.5 8 0
Composant3 0 0 1.63
Composant1 1.5 7 0
Composant1 1.5 10 0
-----------------------------------------------------
En effet j'attends à avoir comme montant :
1.5*10+1.5*8+1.5*7+1.5*10=50.5
Or j'obtiens 157.5 !! Voyez-vous le problème dans la requête ?
Merci pour votre aide.
Partager