如何在SQL中更改临时表中的列的数据类型

时间:2012-06-25 18:28:13

标签: sql-server tsql temp-tables

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

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

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

非常感谢任何解决方案。

谢谢。

3 个答案:

答案 0 :(得分:9)

只需将数字显式转换为更大的类型。我使用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;

答案 1 :(得分:3)

试试这个

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

答案 2 :(得分: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