Bonjour,
J'utilise une base SQL Server et à partir de la requête (un peu plus bas) je souhaite obtenir le résultat suivant
citroen 320
peugeot 160
renault NULL |
au lieu de
citroen 320
peugeot 60
peugeot 100
renault NULL |
Voici la requête que j'utilise. J'aurai pensé que le GROUP BY aurait agrégé les marques, mais cela ne semble pas vouloir être le cas. Si j'utilise le sum(), j'ai un comportement assez étrange qui double mes montants plutôt que de les additionner... Si jamais vous avez une réponse, à ce problème je suis preneur. Merci beaucoup. Voir solution au bas du post
Code :
- SELECT
- case when f1.marque is Null then f2.marque else f1.marque end as marq,
- f2.total_vente
- FROM
- (SELECT * FROM voiture) f1
- FULL OUTER JOIN
- (SELECT marque, montant * quantite AS total_vente FROM vente GROUP BY marque, montant, quantite) f2
- ON
- f1.marque = f2.marque
- GROUP BY f2.marque, f1.marque, f2.total_vente
- ORDER BY marq
|
- Table vente
MARQUE MODELE MONTANT QUANTITE
citroen Xantia 40 8
peugeot 307 50 2
peugeot 408 60 1 |
- Table voiture
MARQUE MODELE ANNEE
peugeot 307 2008
citroen Xantia 1990
citroen Picasso 2008
renault espace 2002
renault R21 1990
peugeot 408 2009 |
Résolution :
Code :
- SELECT
- case when f1.marque is Null then f2.marque else f1.marque end as marq,
- f2.total_vente
- FROM
- (SELECT * FROM voiture) f1
- FULL OUTER JOIN
- (SELECT marque, sum(montant * quantite) AS total_vente FROM vente GROUP BY marque) f2
- ON
- f1.marque = f2.marque
- GROUP BY f1.marque, f2.marque, f2.total_vente
|
Message édité par mi_boulet-mi_shemale le 11-07-2008 à 04:31:32