ERREUR 2616 dépassement Numérique au cours du calcul tout en faisant count(*)
Je suis en train de faire un select count(*)
de table à partir d'un tableau et je ne suis pas en mesure de le faire à cause de cette erreur. Je ne suis pas au courant du nombre de lignes dans la table.
Je ne suis pas en faire tout autre agrégation dans ma requête en dehors de cela.
Je suppose que cela a quelque chose à voir avec le comte de la valeur qui est trop grand pour être stockées en ENTIER.
Quelle est l'alternative?
OriginalL'auteur user3055262 | 2014-01-30
Vous devez vous connecter pour publier un commentaire.
Lors de votre session s'exécute en Teradata mode le résultat d'un nombre est ENTIER comme vous l'avez déjà remarqué (en mode ANSI, il sera un DÉCIMAL avec au moins 15 chiffres).
La solution est simple, jette à un bigint:
ANSI ne parle pas de la précision numérique, c'est toujours la "mise en œuvre". Si vous voulez une meilleure conformité avec la norme ANSI vous suffit de basculer le mode de session à la norme ANSI. Et Excel déjà étouffe le DEC(16) comme c'est le stockage/traitement tout comme FLOAT 🙂
Non merci. Je suis tout à fait content avec les subtilités de Teradata mode. 🙂
OriginalL'auteur dnoeth
C'est le #2 Google a frappé pour Teradata 2616, donc je tiens à ajouter quelque chose. Si vous avez de la 2616 "dépassement Numérique s'est produite à partir d'une SOMME de Teradata, la solution consiste à jeter, alors la SOMME. Le plâtre doit être à l'intérieur de la SOMME:
SÉLECTIONNEZ
SOMME(CAST(WHATEVER_QTY COMME SÉPARATEUR DÉCIMAL(38,0)))
À PARTIR de
TER_DATABASE.WHATEVER_TABLE ;
Dans mon cas, DECIMAL(38,0) travaillé, mais BIGINT était 2616. Vous êtes les bienvenus à l'expérience. Voici le lien à l'info.teradata:
http://www.info.teradata.com/HTMLPubs/DB_TTU_14_00/index.html#page/SQL_Reference/B035_1145_111A/Data_Type_Conversions.098.297.html
OriginalL'auteur mojave