2016-11-20 4 views
0

Dans l'instruction SELECT, j'essaie de calculer un pourcentage avec une précision de 1 décimale.Erreur de dépassement arithmétique dans SQL Server lorsque le résultat est converti en nombre décimal

Cette déclaration dans l'instruction select renvoie une erreur de dépassement arithmétique:

CAST(((COUNT(TicketNbr)*100.00)/@TotalCount) AS Decimal (3,1)) END AS Percentage 

La valeur de comptage COUNT(TicketNbr) est 10.

La valeur @TotalCount est 10.

Si je ne rejetez pas le résultat, le résultat est 1.0000. Mais lorsque j'utilise la fonction CAST, la requête génère une erreur de dépassement arithmétique.

Pourquoi cette erreur se produit-elle?

Répondre

3

le résultat à 10 * 100,0/100,0 10 est

il sera nécessaire un minium de décimal (4,1) pour maintenir la valeur.

comme vous rejetterai décimal (3,1) entraînera l'erreur de débordement

+0

Parce que DECIMAL (3,1) 'signifie: 3 chiffres ** Total **, dont 1 après la virgule, de sorte que ne laisse que ** 2 chiffres ** avant la virgule qui n'est * pas assez * pour contenir une valeur de "100.0" –

+0

Merci! Ça a marché! –