Labon90
Messages postés17Date d'inscriptionmardi 12 juillet 2011StatutMembreDernière intervention16 septembre 2011
-
23 août 2011 à 13:37
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 2012
-
26 août 2011 à 00:18
Bonjour à tous,
J'ai une base de donnees avec un champ numero de projet, le nom du projet, le nbr heures des divisions du projet et un champ avec le nbr Heures des Mise en production du Projet.
il y a plusieurs divisions et mise en production pour un meme projet...
Je voudrait avec une requete avoir la SUM des heures des divisions, des Mise en production avec le No et le Nom du projet....
J'ai fait ceci:
Select ProjNo, ProjNom, SUM(NbrHeures) From Production Where NbrHeures > 0 Group BY ProjNom
Il me demande une fonction d'agregat pour le Nom du projet mais je ne trouve pas comment... J'ai essayé first mais ca l'air que c'est juste dans Access...
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 24 août 2011 à 02:10
SELECT Production.ProjNo, Production.ProjNom, Sum([Production]![NbreHeures]) AS Expr1
FROM Production
GROUP BY Production.ProjNo, Production.ProjNom
HAVING (((Sum([Production]![NbreHeures]))>0));
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 23 août 2011 à 17:52
Ok, la boucle semble la meilleure tactique car, de toute façon, il t'aurait fallu parcourir le RecordSet pour récupérer la ligne fournissant les sommes.
Oui, .Net, mais comme ta question ne portais que sur de la syntaxe SQL, j'ai pensé que tu étais dans l'interface de Management Studio de SQL Server.
Donc, ce que je pense mais à confirmer, c'est qu'on ne peut pas faire de Group By lorsque le résultat est destiné à un RecordSet (supposition de l'objet car non précisé); je vois mal comment serait structuré le RecordSet.
Pense à détailler ton environnement dans tes prochaines questions, c'est important.
Vous n’avez pas trouvé la réponse que vous recherchez ?
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 24 août 2011 à 01:41
Salut,
Ajoutes ProjeNo à l' opération d' agrégat ...
Select ProjNo, ProjNom, SUM(NbrHeures) From Production Where SUM(Production.NbrHeures) > 0 Group BY ProjNo, ProjNom
Question:
Pourquoi exclure NbHeures=0 alors que ça n' a pas d' incidence sur la somme ?
C' est plutôt tous les ptrojets dont la SUM(NbrHeures)=0 que tu devras exclure ..., non ?
Enfin je cois...
Labon90
Messages postés17Date d'inscriptionmardi 12 juillet 2011StatutMembreDernière intervention16 septembre 2011 25 août 2011 à 14:17
Merci beaucoup! et pour répondre à ta question c'est qu'il y a des heures prévues et des heures réelles calculée avant et des fois ca donne de négatifs (-3.45)...... D'où le >0
Labon90
Messages postés17Date d'inscriptionmardi 12 juillet 2011StatutMembreDernière intervention16 septembre 2011 25 août 2011 à 18:36
Oui, dans l'étape précedente j'ai fait un Case ... When < 0 then 0 else .... End as PRNbrHeures...
Mais j'ai essayé ton : GROUP BY Production.ProjNo, Production.ProjNom et l'erreur suivant sort...
The text, ntext, and image data types cannot be compared or sorted, except when using IS NULL or LIKE operator.
Ca marche très bien quand je met seulement le PRProjNo
Voici ma requete:
SQLStr = "SELECT PRProjNo, PRProjNom, SUM(PRTonnage) as PRTonnage, SUM(PRNbrHeures) as PRNbrHeures From ProdRestante " _
& " Group BY PRProjNo, PRProjNom HAVING SUM(PRTonnage) > 0 or SUM(PRNbrHeures) > 0 order by PRProjNo"