113 votes

Comment faire la somme de deux champs dans une requête SQL ?

J'ai besoin d'obtenir le total de deux champs qui se trouvent dans la même ligne et de saisir ce nombre dans un champ à la fin de cette même ligne.

Voici mon code.

Sum(tbl1.fld1 + tbl1.fld2) AS [Total]

Est-ce à cela que sert la fonction SUM, ou bien peut-on utiliser la fonction SUM uniquement pour obtenir le total d'une colonne ?

Merci

274voto

John Woo Points 132738

SUM est une fonction agrégée. Elle calculera le total pour chaque groupe. + est utilisé pour calculer deux ou plusieurs colonnes dans une ligne.

Prenons cet exemple,

ID  VALUE1  VALUE2
===================
1   1       2
1   2       2
2   3       4
2   4       5

SELECT  ID, SUM(VALUE1), SUM(VALUE2)
FROM    tableName
GROUP   BY ID

entraînera

ID, SUM(VALUE1), SUM(VALUE2)
1   3           4
2   7           9

SELECT  ID, VALUE1 + VALUE2
FROM    TableName

entraînera

ID, VALUE1 + VALUE2
1   3
1   4
2   7
2   9

SELECT  ID, SUM(VALUE1 + VALUE2)
FROM    tableName
GROUP   BY ID

entraînera

ID, SUM(VALUE1 + VALUE2)
1   7
2   16

41voto

Obl Tobl Points 3091

Essayez ce qui suit :

SELECT *, (FieldA + FieldB) AS Sum
FROM Table

14voto

Barb Dawdy Points 149

Juste un rappel sur l'ajout de colonnes. Si l'une des valeurs est NULL, le total de ces colonnes devient NULL. C'est pourquoi certaines affiches ont recommandé de coalescer avec le second paramètre égal à 0.

Je sais qu'il s'agit d'un ancien message mais je voulais ajouter ceci pour être complet.

11voto

E Coder Points 185
ID  VALUE1  VALUE2
===================
1   1       2

1   2       2
2   3       4
2   4       5

select ID, (coalesce(VALUE1 ,0) + coalesce(VALUE2 ,0) as Total from TableName

7voto

Daniel Kelley Points 4484

SUM est utilisé pour additionner la valeur d'une colonne pour plusieurs lignes. Vous pouvez simplement additionner vos colonnes :

select tblExportVertexCompliance.TotalDaysOnIncivek + tblExportVertexCompliance.IncivekDaysOtherSource AS [Total Days on Incivek]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X