2009-12-08 8 views
1

Quelle est l'approche correcte dans t-sql dans ce qui suit? : sum(rounded(fractions,2)) ou round(sum(of fractions),2) ta!approche correcte avec arrondi t-sql

J'ai essayé deux approches et obtenu mon total encore jusqu'à la fin avec un autre résultat pour chaque ne sais pas si je dois tronquer somwhere

Je veux x, y * z = @v de telle sorte que somme (x) * @v = somme (z)

Merci

Répondre

4
round(sum(of fractions),2) 

est le plus précis, comme vous l'arrondissement qu'une seule fois, juste à la fin. Dans l'autre sens, vous arrondissez chaque valeur individuelle avant de faire la somme, de sorte que le résultat final sera probablement moins précis à tous les niveaux.

Edit: par exemple très simple:

DECLARE @Data TABLE (Val DECIMAL(9,2)) 
INSERT @Data VALUES (1.15) 
INSERT @Data VALUES (1.15) 
INSERT @Data VALUES (1.15) 

SELECT ROUND(SUM(Val), 1) As Sum1, SUM(ROUND(Val, 1)) AS Sum2 
FROM @Data 

donne Som1 = 3,50 et Sum2 = 3,60. 1,15 + 1,15 + 1,15 = 3,45 (vrai total). Par conséquent, Sum1 est bien évidemment plus précis