Hoe twee velden op te tellen binnen een SQL-query

Ik moet het totaal van twee velden in dezelfde rij krijgen en dat nummer invoeren in een veld aan het einde van diezelfde rij.

Dit is mijn code.

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

Is dit waar de SUM-functie voor wordt gebruikt, of kun je de SUM-functie alleen gebruiken om het totaal van een kolom te krijgen?

Bedankt


Antwoord 1, autoriteit 100%

SUM is een aggregatiefunctie. Het berekent het totaal voor elke groep. + wordt gebruikt voor het berekenen van twee of meer kolommen op een rij.

Beschouw dit voorbeeld,

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

zal resulteren

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

 

SELECT  ID, VALUE1 + VALUE2
FROM    TableName

zal resulteren

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

 

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

zal resulteren

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

Antwoord 2, autoriteit 15%

Probeer het volgende:

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

Antwoord 3, autoriteit 3%

SUM wordt gebruikt om de waarde in een kolom voor meerdere rijen op te tellen. U kunt uw kolommen gewoon bij elkaar optellen:

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

Antwoord 4, autoriteit 3%

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

Antwoord 5, autoriteit 3%

Gewoon een herinnering over het toevoegen van kolommen. Als een van de waarden NULL is, wordt het totaal van die kolommen NULL. Dus waarom sommige posters hebben aanbevolen om samen te voegen met als tweede parameter 0

Ik weet dat dit een ouder bericht was, maar wilde dit voor de volledigheid toevoegen.


Antwoord 6, autoriteit 2%

Omdat mijn reputatiepunten minder dan 50 waren, kon ik geen commentaar geven op of stemmen op het bovenstaande antwoord van E Coder. Dit is de beste manier om dit te doen, zodat u de groep niet hoeft te gebruiken omdat ik een soortgelijk probleem had.
Door SUM((coalesce(VALUE1 ,0)) + (coalesce(VALUE2 ,0))) als Total in te voeren, krijgt u het gewenste nummer, maar verwijdert u ook alle fouten voor het niet uitvoeren van een Groeperen op.
Dit was mijn vraag en gaf me een totaalbedrag en totaalbedrag voor elke dealer en gaf me vervolgens een subtotaal voor kwaliteits- en risicovolle dealerleningen.

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

Antwoord 7, autoriteit 2%

De somfunctie haalt alleen het totaal van een kolom op. Om twee waarden uit verschillende kolommen op te tellen, converteert u de waarden naar int en telt u ze op met behulp van de +-Operator

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

Hopelijk helpt dat.


Antwoord 8

Als u twee kolommen bij elkaar wilt voegen, hoeft u ze alleen maar toe te voegen. Vervolgens krijgt u de som van die twee kolommen voor elke rij die door de zoekopdracht wordt geretourneerd.

Wat uw code doet, is de twee kolommen bij elkaar optellen en vervolgens een som van de sommen krijgen. Dat zal werken, maar het is misschien niet wat u probeert te bereiken.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

2 × five =

Other episodes