FEHLER 2616 Numerischen überlauf während der Berechnung, während count(*)
Ich versuche zu tun, eine select count(*)
aus der Tabelle aus einer Tabelle und ich bin nicht in der Lage, es zu tun, weil dieser Fehler. Ich bin mir nicht bewusst die Anzahl der Zeilen in der Tabelle.
Tue ich nicht jede andere aggregation in meiner Abfrage abgesehen von dieser.
Ich denke, es hat etwas zu tun mit dem count-Wert zu groß ist, werden gespeichert in INTEGER.
Was ist die alternative?
InformationsquelleAutor user3055262 | 2014-01-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Ihre Sitzung läuft in Teradata-Modus das Ergebnis der ZÄHLUNG ist INTEGER, wie du schon bemerkt (im ANSI-Modus wird es eine DEZIMALZAHL mit mindestens 15 stellen).
Die Abhilfe ist einfach: wirf ihn auf eine bigint:
ANSI nicht sprechen Sie über die numerische Präzision, diese ist immer "implementation-defined". Wenn Sie wollen eine bessere übereinstimmung mit den ANSI-Sie müssen nur zum wechseln session-Modus zu ANSI. Und Excel bereits drosseln auf DEC(16), da es die Speicherung/Verarbeitung alles, was als FLOAT 🙂
Nein, danke. Ich bin ganz zufrieden mit den Feinheiten der Teradata-Modus. 🙂
InformationsquelleAutor dnoeth
Dies ist die #2 der Google-Treffer für Teradata-2616, so möchte ich etwas hinzufügen. Wenn Sie immer 2616 "Numerischer überlauf aufgetreten" ab einer SUMME in Teradata, die Lösung ist zu CASTEN, dann die SUMME. Die BESETZUNG hat innerhalb der SUMME:
WÄHLEN
SUM(CAST(WHATEVER_QTY ALS DEZIMALZAHL(38,0)))
AUS
TER_DATABASE.WHATEVER_TABLE ;
In meinem Fall, DECIMAL(38,0) gearbeitet, aber BIGINT war 2616. Sie sind herzlich eingeladen, zu Experimentieren. Hier der link zur 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
InformationsquelleAutor mojave