在将值保存到临时表中时,有没有办法更改(增加)列的数据类型?
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
我们在实际查询中有更大的计算。当我们执行存储过程时,我们得到一个错误“算术溢出错误,将数字转换为数据类型数字”。
非常感谢任何解决方案。
谢谢。
答案 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