SUM dans SQL

codial Messages postés 265 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 5 mai 2015 - 6 oct. 2005 à 16:40
dominique.stock Messages postés 436 Date d'inscription vendredi 7 novembre 2003 Statut Membre Dernière intervention 8 octobre 2008 - 11 oct. 2005 à 14:08
Bonjour,

j'ai écrit une requête avec la fonction SUM:

monSql:= 'SELECT Import.* , sum(Euros) Total_Euros FROM Import where (Import.Libelle like ''%' + UpperCase(Edit2.Text) + '%'') GROUP BY Compteur, Date_Opé, libelle, euros, francs ';
Query1.sql.Clear;
Query1.sql.Text:=monSql ;
Query1.Active:=True;

Quand je veux afficher dans un TEdit la valeur de Total_Euros :

Edit3.Text:=CurrToStrF(Query1.Fieldbyname('Total_Euros').asCurrency,fffixed,2);

j'ai juste la valeur Euros du dernier enregistrement

Comment je peux faire sous Delphi pour récupérer la somme de Total_Euros ???

D'avance merci

Codial
A voir également:

10 réponses

lapucedu88 Messages postés 96 Date d'inscription jeudi 1 avril 2004 Statut Membre Dernière intervention 22 mai 2008 1
7 oct. 2005 à 09:44
As tu essayer de faire Select Sum(Total_euro) as Total from TaTable

Puis Tedit.Text:=CurrToStrF(Query1.fieldbyname('Total').asCurrency,fffixed,2)

La puce
0
codial Messages postés 265 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 5 mai 2015 1
7 oct. 2005 à 10:04
Bonjour,
oui j'ai essayé car ça a été ma première syntaxe j'ai découvert celle sans AS en parcourant le forum.

Cordialement

Codial
0
lapucedu88 Messages postés 96 Date d'inscription jeudi 1 avril 2004 Statut Membre Dernière intervention 22 mai 2008 1
7 oct. 2005 à 13:06
Dans ce cas désolé mais je sais pas comment sela ce fait, je ne peut pas t'aider d'avantage.
En espèrant que quelqu'un d'autre pourra le faire.
0
codial Messages postés 265 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 5 mai 2015 1
7 oct. 2005 à 14:10
Merci quand même pour la réponse:

Cordialement

Codial
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
8 oct. 2005 à 23:52
Je suggère que tu reprennes la solution proposée par lapucedu88. C'est la seule formulation qui te donnera la somme de la colonne Total_Euro.

En mélangeant des aggrégats et des non aggrégats, on est obligé, en SQL, d'ajouter une claude ORDER BY. En faisant cela, la requête, dans ton cas précis, effectue une somme de la oclonne Total_Euro uniquement pour chaque regroupement demandé et non sur l'ensemble de la table.
D'ailleurs, je me demande si certaines colonnes dans la clause order by ont un sens dans le contexte d'utilisation.

Enfin, un petit conseil : pour éviter l'injection SQL, remplace UpperCase(Edit2.Text) par QuotedStr(UpperCase(Edit2.Text)). Si tu ne fais rien, tu crées une belle faille de sécurité

<HR color=#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
0
dominique.stock Messages postés 436 Date d'inscription vendredi 7 novembre 2003 Statut Membre Dernière intervention 8 octobre 2008 7
10 oct. 2005 à 14:13
N'as-tu pas un champ du même nom dans "Import.* " ??

Dom
0
codial Messages postés 265 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 5 mai 2015 1
10 oct. 2005 à 17:38
Bonjour,

Je comprends pas vraiment car il semble que je sois obligé de mettre un ORDER BY sinon j'ai le message d'erreur "GROUP BY est nécessaire quand à la fois des champs globausx et non-globaux sont utilisés dans l'ensemble résultat."

Oui c'est juste la requête effectue un effectue une somme de la oclonne Total_Euro uniquement pour chaque regroupement et non sur l'ensemble de la table et ce n'est pas ce que je veux!!

Pour arriver à ce que je veux en fait je suis obligé de balaiyer tous les enregistrements en incrémentant le champ Euros de sa valeur pour avoir le total.

Encore merci pour les réponses

Codial
0
dominique.stock Messages postés 436 Date d'inscription vendredi 7 novembre 2003 Statut Membre Dernière intervention 8 octobre 2008 7
11 oct. 2005 à 08:21
Pourquoi rappeller le champ euros dans ton "order by" ?

Dom
0
codial Messages postés 265 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 5 mai 2015 1
11 oct. 2005 à 12:56
Bonjour,

il me semble que les champs de l'ORDER BY doivent correspondent à ceux du SELECT non?

Codial
0
dominique.stock Messages postés 436 Date d'inscription vendredi 7 novembre 2003 Statut Membre Dernière intervention 8 octobre 2008 7
11 oct. 2005 à 14:08
Désolé,
Bonjour,
Dans le group by ....
Ta requête ne devrait-elle pas être :
select Compteur, Date_Opé, libelle,sum( euros ) as totaleuros,sum(francs) as totalfranc from import group by compteur,date_opé,libelle

ainsi pour chaque groupe de Compteur, Date_Opé, libelle tu aurais une somme de francs et une somme d'euros ...



Dom
0
Rejoignez-nous