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

5voto

CelticCoder Points 66

En raison de mes points de réputation inférieurs à 50, je n'ai pas pu commenter ou voter pour la réponse de E Coder ci-dessus. C'est la meilleure façon de procéder pour que vous n'ayez pas à utiliser le groupe par, car j'ai eu un problème similaire.
En faisant SUM((coalesce(VALUE1 ,0)) + (coalesce(VALUE2 ,0))) comme Total, ce qui vous permettra d'obtenir le nombre que vous voulez, mais aussi de vous débarrasser de toute erreur pour ne pas avoir effectué un Group By. C'était ma requête et elle m'a donné le nombre total et le montant total pour chaque concessionnaire, puis un sous-total pour les prêts de qualité et les prêts à risque des concessionnaires.

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

4voto

LuigiEdlCarno Points 2382

La fonction somme ne permet d'obtenir que le total d'une colonne. Pour additionner deux valeurs provenant de colonnes différentes, convertissez les valeurs en int et additionnez-les en utilisant l'opérateur +.

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

J'espère que cela vous aidera.

3voto

Dan Bracuk Points 9529

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

Ce que votre code fait, c'est additionner les deux colonnes et obtenir une somme des sommes. Cela peut fonctionner, mais ce n'est peut-être pas ce que vous cherchez à accomplir.

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