2017-10-10 3 views
1

Quel est le problème avec ma requête logique? Je veux juste calculer Note des utilisateurs'Erreur de débordement arithmétique de conversion int pour type de données numérique' erreur sur ma requête

UPDATE MyTable 
     SET RatingAvg = CASE 
         WHEN RatingAvg = 0 THEN @Rating 
         ELSE CAST((((CAST(RatingAvg AS DECIMAL(7,6)) * CAST(ReviewCount AS DECIMAL(7,6))) + CAST(@Rating AS DECIMAL(7,6)))/CAST((ReviewCount + 1)AS DECIMAL(7,6))) AS DECIMAL(7,6)) 
         END 
+0

Veuillez ajouter des données d'échantillon –

+0

Quel est le type de données de '@ Rating'? –

+0

Voici un bon point de départ: [Comment publier une question T-SQL sur un forum public] (http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question- sur un forum public /) – Marusyk

Répondre

0

Il semble que l'erreur se produit lorsque vous lancez grand int decimal(7,6)

décimal définit le nombre total de chiffres, puis le nombre après la virgule. Donc, dans ce cas, le nombre maximum est 9 que vous pouvez lancer à decimal(7,6)

Lorsque vous essayez lancer le plus grand nombre de 9-decimal(7,6) alors vous obtiendrez une erreur

erreur de dépassement arithmétique conversion int type de données numérique.