web-dev-qa-db-fra.com

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

Je dois obtenir le total des deux champs qui sont dans la même ligne et entrer ce nombre dans un champ à la fin de cette même ligne.

Ceci est mon code.

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

S'agit-il de l'utilisation de la fonction SOMME ou pouvez-vous utiliser uniquement la fonction SOMME pour obtenir le total d'une colonne?

Merci

68
Anton Hughes

SUM est une fonction d'agrégat. Il calculera le total pour chaque groupe. + est utilisé pour calculer deux colonnes ou plus dans une ligne.

Considérons 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

résultera

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

SELECT  ID, VALUE1 + VALUE2
FROM    TableName

résultera

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

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

résultera

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

Essayez ce qui suit:

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

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

select tblExportVertexCompliance.TotalDaysOnIncivek + tblExportVertexCompliance.IncivekDaysOtherSource AS [Total Days on Incivek]
7
Daniel Kelley
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
6
E Coder

La fonction sum obtient seulement le total d'une colonne. Pour additionner deux valeurs de colonnes différentes, convertissez les valeurs en entiers et additionnez-les à l'aide de l'opérateur +

Select (convert(int, col1)+convert(int, col2)) as summed from tbl1

J'espère que ça t'as aidé.

4
LuigiEdlCarno

En raison de mes points de réputation inférieurs à 50, je ne pouvais pas commenter ni voter pour la réponse de E Coder ci-dessus. C'est la meilleure façon de le faire, vous n'avez donc pas à utiliser le groupe, car j'avais un problème similaire.
En faisant SUM((coalesce(VALUE1 ,0)) + (coalesce(VALUE2 ,0))) en tant que Total, vous obtiendrez le numéro de votre choix, mais vous débarrasserez également de toute erreur si vous ne réalisez pas un groupe. Telle était ma demande et m'a donné un compte total et le montant total pour chaque concessionnaire, puis m'a donné un sous-total pour les prêts concessionnaires Quality et Risky.

SELECT 
    DISTINCT STEP1.DEALER_NBR
    ,COUNT(*) AS DLR_TOT_CNT
    ,SUM((COALESCE(DLR_QLTY,0))+(COALESCE(DLR_RISKY,0))) AS DLR_TOT_AMT
    ,COUNT(STEP1.DLR_QLTY) AS DLR_QLTY_CNT
    ,SUM(STEP1.DLR_QLTY) AS DLR_QLTY_AMT
    ,COUNT(STEP1.DLR_RISKY) AS DLR_RISKY_CNT
    ,SUM(STEP1.DLR_RISKY) AS DLR_RISKY_AMT
    FROM STEP1
    WHERE DLR_QLTY IS NOT NULL OR DLR_RISKY IS NOT NULL
        GROUP BY STEP1.DEALER_NBR
3
CelticCoder

Si vous voulez ajouter deux colonnes ensemble, il vous suffit de les ajouter. Ensuite, vous obtiendrez la somme de ces deux colonnes pour chaque ligne renvoyée par la requête.

Votre code consiste à ajouter les deux colonnes ensemble, puis à obtenir la somme des sommes. Cela fonctionnera, mais ce ne sera peut-être pas ce que vous essayez d'accomplir.

3
Dan Bracuk

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é la fusion, le deuxième paramètre étant 0

Je sais que c'était une publication plus ancienne, mais je voulais ajouter ceci pour que ce soit complet.

0
Barb Dawdy