Su4p
Messages postés4Date d'inscriptionjeudi 2 juillet 2009StatutMembreDernière intervention14 février 2020
-
28 janv. 2010 à 08:51
hymnuade
Messages postés39Date d'inscriptionmardi 21 décembre 2004StatutMembreDernière intervention15 février 2010
-
15 févr. 2010 à 16:28
Contexte : la *** a un parc de 50 vehicules situés dans différentes villes. La *** souhaiterais un site afin de suivre leurs interventions et leurs consomations. mais aussi des statistiques d'aide à la prise de décision :
je souhaiterais pouvoir calculer le cout des consomations et des interventions des vehicules de chacunes des villes afin d'emettre un graphique ou l'on pourais voir la ville qui dépense le plus etc...
Ma vue pour le calcul des interventions sur les vehicules organisés par ville :
CREATE VIEW dbo.vueClassementVillePlusCherIntervention
AS
SELECT TOP 100 PERCENT dbo.ville.vil_libelle, SUM(dbo.commande.cmd_montant_ttc) AS somInt
FROM dbo.ville INNER JOIN
dbo.vehicule ON dbo.ville.vil_id = dbo.vehicule.veh_vil_id INNER JOIN
dbo.Interventions ON dbo.vehicule.veh_immat = dbo.Interventions.int_veh_immat INNER JOIN
dbo.commande ON dbo.Interventions.int_id = dbo.commande.cmd_int_id
GROUP BY dbo.ville.vil_libelle
ORDER BY somInt DESC
Ma vue pour le calcul des consomations sur les vehicules organisés par ville :
CREATE VIEW dbo.vueClassementVillePlusCherConso
AS
SELECT dbo.ville.vil_libelle, SUM(dbo.consomation.conso_montant) AS somConso
FROM dbo.ville INNER JOIN
dbo.vehicule ON dbo.ville.vil_id = dbo.vehicule.veh_vil_id INNER JOIN
dbo.consomation ON dbo.vehicule.veh_immat = dbo.consomation.conso_veh_immat
GROUP BY dbo.ville.vil_libelle
Ma vue pour le calcul des consomations sur les vehicules organisés par ville :
CREATE VIEW dbo.vueClassementVillePlusCher
AS
SELECT TOP 100 PERCENT dbo.vueClassementVillePlusCherIntervention.vil_libelle,
( dbo.vueClassementVillePlusCherIntervention.somInt + dbo.vueClassementVillePlusCherConsommation.somConso) AS somCout
FROM dbo.vueClassementVillePlusCherIntervention,
dbo.vueClassementVillePlusCherConsommation
ORDER BY somCout DESC
Probleme : mes villes sont en double (normal il n'y a pas de group by) donc :
CREATE VIEW dbo.vueClassementVillePlusCher
AS
SELECT TOP 100 PERCENT dbo.vueClassementVillePlusCherIntervention.vil_libelle,
( dbo.vueClassementVillePlusCherIntervention.somInt + dbo.vueClassementVillePlusCherConsommation.somConso) AS somCout
FROM dbo.vueClassementVillePlusCherIntervention,
dbo.vueClassementVillePlusCherConsommation
group by dbo.vueClassementVillePlusCherIntervention.vil_libelle
ORDER BY somCout DESC
Probleme : MICROSOFT SQL-DMO SQLState:42000
Erreur 8120 la colonne somInt n'est pas valide dans la liste de sélection parce qu'elle n'est pas contenue dans une fonction d'agrégation ou dans la clause du GROUP BY. la colonne somConso n'est pas valide dans la liste de sélection parce qu'elle n'est pas contenue dans une fonction d'agrégation ou dans la clause du GROUP BY.
hymnuade
Messages postés39Date d'inscriptionmardi 21 décembre 2004StatutMembreDernière intervention15 février 2010 15 févr. 2010 à 16:28
Bonjour,
Quand tu regroupes, l'ensemble des champs requêtés doivent soit apparaître dans la clause GROUP BY, soit être aggrégés EX :
CREATE VIEW dbo.vueClassementVillePlusCher
AS
SELECT TOP 100 PERCENT dbo.vueClassementVillePlusCherIntervention.vil_libelle,
( SUM(dbo.vueClassementVillePlusCherIntervention.somInt) + SUM(dbo.vueClassementVillePlusCherConsommation.somConso) ) AS somCout
FROM dbo.vueClassementVillePlusCherIntervention,
dbo.vueClassementVillePlusCherConsommation
group by dbo.vueClassementVillePlusCherIntervention.vil_libelle
ORDER BY somCout DESC
A noter que le select TOP 100 PERCENT va te ramener 100% du résultat de requête, est-il vraiment utile en l'espèce ?