Tsql SQL:INT类型的溢出错误

Tsql SQL:INT类型的溢出错误,tsql,Tsql,我有下面的SQL代码,我正在尝试创建一个二阶多项式回归公式。在执行此操作时,@SUMX4接收到如下错误: Msg 232,16级,状态3,第18行 int类型的算术溢出错误,值=2342560000.000000 我将所有变量都转换为BIGINT,但仍然得到这个错误。有什么想法吗 create table Set1 (X INT, Y INT) INSERT INTO Set1 VALUES (220, 630) ,(350, 940) ,(450, 1140); DECLARE @SUM

我有下面的SQL代码,我正在尝试创建一个二阶多项式回归公式。在执行此操作时,@SUMX4接收到如下错误:

Msg 232,16级,状态3,第18行 int类型的算术溢出错误,值=2342560000.000000

我将所有变量都转换为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)

SUM返回与正在求和的表达式相同的数据类型。尝试按如下方式对bigint进行强制转换:

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

对于所有的总和

,即使它们已经是BIGINT?sum不应该知道我在添加BIGINT并创建一个BIGINT吗?是字段,不是变量。CREATETABLE语句将X和Y定义为INT。你说得对!不知道为什么我没看到!在那之后,我非常专注于一切。谢谢别担心,伙计