有没有办法在将值保存到临时表中时更改(增加)列的数据类型?
SELECT TableA.ID_NO, sum(TABLEA.COST * TABLEB.QTY) as TOTAL
INTO #matCalc
FROM TABLEA A
INNER JOIN TABLEB
ON A.ID_NO = B.ID_NO
我们在实际查询中进行了更大的计算。当我们执行存储过程时,我们得到一个错误“将数字转换为数据类型数字的算术溢出错误”。
非常感谢任何解决方案。
谢谢你。
有没有办法在将值保存到临时表中时更改(增加)列的数据类型?
SELECT TableA.ID_NO, sum(TABLEA.COST * TABLEB.QTY) as TOTAL
INTO #matCalc
FROM TABLEA A
INNER JOIN TABLEB
ON A.ID_NO = B.ID_NO
我们在实际查询中进行了更大的计算。当我们执行存储过程时,我们得到一个错误“将数字转换为数据类型数字的算术溢出错误”。
非常感谢任何解决方案。
谢谢你。
只需将数字显式转换为更大的类型。我以 18,2 为例,但我不知道您的数据,因此不同的精度/比例可能更适合您:
SELECT TableA.ID_NO,
SUM(CONVERT(DECIMAL(18,2), TABLEA.COST) * TABLEB.QTY) as TOTAL
INTO #matCalc
FROM TABLEA A
INNER JOIN TABLEB
ON A.ID_NO = B.ID_NO;
试试这个
Create Table #matCalc(
ID BIGINT NULL,
TOTAL BIGINT NULL
)
INSERT INTO #matCalc
SELECT TableA.ID_NO, sum(TABLEA.COST * TABLEB.QTY) as TOTAL
FROM TABLEA A
INNER JOIN TABLEB
ON A.ID_NO = B.ID_NO
使用临时表作为:
使用适当的数据类型,例如您可能希望将 NUMERIC(18,2) 用于 TOTAL
DECLARE @TempTable TABLE(
ID BIGINT NULL,
TOTAL BIGINT NULL
)
DELETE FROM @TempTable
INSERT INTO @TempTable
SELECT TableA.ID_NO, sum(TABLEA.COST * TABLEB.QTY) as TOTAL
FROM TABLEA A
INNER JOIN TABLEB
ON A.ID_NO = B.ID_NO