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.