Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/12/2007, 21h16   #1
Invité de passage
 
Inscription : décembre 2007
Messages : 2
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 2
Points : 0
Points : 0
Par défaut Comment joindre ces 4 requetes en une seule requete

Bonjour les amis,
j'aimerais bien arriver à résoudre un petit problème relatif à la synhetisation de 4 requetes en 1 seule :

Voici les 4 requetes :

select
EFAC.VRP,
SUM (LFAC.QTE * LFAC.PRIXU * ((100- LFAC.REM)/100)) as "supérieur à 199"
from
EFAC, LFAC
where lfac.nof=efac.nof and efac.datecrea between '01/12/2007' and '14/12/2007' and lfac.typa='SUP 200'
group by
EFAC.VRP;


select
EFAC.VRP,
SUM (LFAC.QTE * LFAC.PRIXU * ((100- LFAC.REM)/100)) as "Inférieur à 199"
from
EFAC, LFAC
where lfac.nof=efac.nof and efac.datecrea between '01/12/2007' and '14/12/2007' and lfac.typa='INF 200'
group by
EFAC.VRP;

select
EFAC.VRP,
SUM (LFAC.QTE * LFAC.PRIXU * ((100- LFAC.REM)/100)) as "MODEM"
from
EFAC, LFAC
where lfac.nof=efac.nof and efac.datecrea between '01/12/2007' and '14/12/2007' and lfac.typa='MODEM'
group by
EFAC.VRP;

select
EFAC.VRP,
SUM (LFAC.QTE * LFAC.PRIXU * ((100- LFAC.REM)/100)) as "recharge aux revendeurs"
from
EFAC, LFAC
where lfac.nof=efac.nof and efac.datecrea between '01/12/2007' and '14/12/2007' and lfac.fam='RECHARGE' AND EFAC.REM <> 0
group by
EFAC.VRP;






est ce possible de faire un seul affichage pour les quatre dans le même tableau :

vendeur Sup 199 Inf. 199 Recharge revendeur Modem


Oracle 10g
sahatel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/12/2007, 12h39   #2
Membre du Club
 
Inscription : février 2007
Messages : 69
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 69
Points : 42
Points : 42
essaye de mettre les meme alias et tu fait un UNION entre les requetes
adiltyane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/12/2007, 13h53   #3
Invité de passage
 
Inscription : décembre 2007
Messages : 2
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 2
Points : 0
Points : 0
Citation:
Envoyé par adiltyane Voir le message
essaye de mettre les meme alias et tu fait un UNION entre les requetes
çà ne va pas marcher, puisque je veux pour chaque critère un affichage dédié,

le but pour moi c'est de connaître les réalisations de ces vendeurs par type de vente,

Vendeur 1 | sup199 | Inf199 | Modem | Recharge revendeur

Vendeur 1 | 2340 | 1444 | 2345 | 23456

Vendeur 2 | 435666 | 12345 | 1245 | 13456
sahatel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/12/2007, 15h36   #4
Membre du Club
 
Inscription : février 2007
Messages : 69
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 69
Points : 42
Points : 42
essayer d'utiliser un decode je sais pas si ca va marcher mais c'est une idee

select
EFAC.VRP,
SUM (decode(lfac.typa,'SUP 200',LFAC.QTE * LFAC.PRIXU * ((100- LFAC.REM)/100,0)) as "supérieur à 199",
SUM (decode(lfac.typa,'INF 200',LFAC.QTE * LFAC.PRIXU * ((100- LFAC.REM)/100,0)) as "Inférieur à 199",
SUM (decode(lfac.typa,'MODEM',LFAC.QTE * LFAC.PRIXU * ((100- LFAC.REM)/100,0)) as "MODEM",
SUM (decode(lfac.typa,'RECHARGE',LFAC.QTE * LFAC.PRIXU * ((100- LFAC.REM)/100,0)) as "recharge aux revendeurs"
from
EFAC, LFAC
where lfac.nof=efac.nof and efac.datecrea between '01/12/2007' and '14/12/2007' and lfac.typa='SUP 200'
or
lfac.nof=efac.nof and efac.datecrea between '01/12/2007' and '14/12/2007' and lfac.typa='INF 200'
or
lfac.nof=efac.nof and efac.datecrea between '01/12/2007' and '14/12/2007' and lfac.typa='MODEM'
or
lfac.nof=efac.nof and efac.datecrea between '01/12/2007' and '14/12/2007' and lfac.fam='RECHARGE' AND EFAC.REM <> 0
group by
EFAC.VRP;
adiltyane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2007, 14h50   #5
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 450
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 450
Points : 4 209
Points : 4 209


Oui ça va marcher, une petite simplification du code
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT
	efac.vrp,
	SUM (DECODE(lfac.typa,'SUP 200',lfac.qte * lfac.prixu * ((100- lfac.rem)/100,0)) AS "supérieur à 199",
	SUM (DECODE(lfac.typa,'INF 200',lfac.qte * lfac.prixu * ((100- lfac.rem)/100,0)) AS "Inférieur à 199",
	SUM (DECODE(lfac.typa,'MODEM',lfac.qte * lfac.prixu * ((100- lfac.rem)/100,0)) AS "MODEM",
	SUM (DECODE(lfac.typa,'RECHARGE',lfac.qte * lfac.prixu * ((100- lfac.rem)/100,0)) AS "recharge aux revendeurs"
FROM EFAC, LFAC
WHERE lfac.nof = efac.nof 
AND efac.datecrea BETWEEN '01/12/2007' AND '14/12/2007' 
AND (
	(lfac.typa IN ('SUP 200', 'INF 200', 'MODEM'))
  OR
	(lfac.fam='RECHARGE' AND efac.rem <> 0)
	)
GROUP BY efac.vrp;
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h49.


 
 
 
 
Partenaires

Hébergement Web