2017-01-26 4 views
0

私は以下のSQLコードを持っています。私は2次多項式回帰の式を作成しようとしています。 int型、値= 2342560000.000000ためSQL:タイプINTのオーバーフローエラー

メッセージ232、レベル16、状態3、ライン18 算術オーバーフローエラーを:私はこれをやっている間に次のように、SUMX4 @エラーを受信して​​います。

すべての変数をBIGINTに変換しましたが、このエラーが発生しました。何か案は?

create table Set1 
(X INT, 
Y INT) 
INSERT INTO Set1 VALUES 
(220, 630) 
,(350, 940) 
,(450, 1140); 


DECLARE @SUMX BIGINT 
DECLARE @SUMY BIGINT 
DECLARE @SUMX2 BIGINT 
DECLARE @SUMY2 BIGINT 
DECLARE @SUMX3 BIGINT 
DECLARE @SUMX4 BIGINT 
DECLARE @SUMXX BIGINT 
DECLARE @SUMXY BIGINT 
DECLARE @SUMXX2 BIGINT 
DECLARE @SUMX2Y BIGINT 
DECLARE @SUMX2X2 BIGINT 

SET @SUMX = (SELECT SUM(X) FROM SET1) 
SET @SUMY = (SELECT SUM(Y) FROM SET1) 
SET @SUMX2 = (SELECT SUM(POWER(X,2)) FROM SET1) 
SET @SUMY2 = (SELECT SUM(POWER(Y,2)) FROM SET1) 
SET @SUMX3 = (SELECT SUM(POWER(X,3)) FROM SET1) 
SET @SUMX4 = (SELECT SUM(POWER(X,4)) FROM SET1) 


PRINT CONCAT('SUMX: ', @SUMX) 
PRINT CONCAT('SUMY: ', @SUMY) 
PRINT CONCAT('SUMX2: ', @SUMX2) 
PRINT CONCAT('SUMY2: ', @SUMY2) 
PRINT CONCAT('SUMX3: ', @SUMX3) 
PRINT CONCAT('SUMX4: ', @SUMX4) 
PRINT CONCAT('SUMXX: ', @SUMXX) 
PRINT CONCAT('SUMXY: ', @SUMXY) 
PRINT CONCAT('SUMXX2: ', @SUMXX2) 
PRINT CONCAT('SUMX2Y: ', @SUMX2Y) 
PRINT CONCAT('SUMX2X2: ', @SUMX2X2) 

答えて

1

SUMは、合計している式と同じデータ型を返します。このようBIGINTにキャストしてみてください。すべての合計

+0

ため

SET @SUMX = (SELECT SUM(CAST(X AS BIGINT)) FROM SET1) ... SET @SUMX2 = (SELECT SUM(POWER(CAST(X AS BIGINT),2)) FROM SET1) ... 

彼らはすでにBIGINTであっても?私はBIGINTを追加してBIGINTを作成していることを知ってはいけませんか? – SeanDon

+3

これはフィールドであり、変数ではありません。 create table文は、XとYをINTとして定義します。 –

+1

あなたは正しいです!なぜ私はそれを見ていないか分からない!私はそれの後のすべてにとても集中していた。ありがとう! – SeanDon

関連する問題