3

有没有办法在将值保存到临时表中时更改(增加)列的数据类型?

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

我们在实际查询中进行了更大的计算。当我们执行存储过程时,我们得到一个错误“将数字转换为数据类型数字的算术溢出错误”。

非常感谢任何解决方案。

谢谢你。

4

3 回答 3

11

只需将数字显式转换为更大的类型。我以 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;
于 2012-06-25T18:37:45.890 回答
4

试试这个

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
于 2012-06-25T18:50:39.460 回答
0

使用临时表作为:

使用适当的数据类型,例如您可能希望将 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
于 2012-06-25T18:30:49.337 回答