Arithmetic overflow error converting expression to data type int
I'm having an issue on the query below. The issue is:
Msg 8115, Level 16, State 2, Line 1 Arithmetic overflow error converting expression to data type int
The issue is located in this line of the code below.
INNER JOIN Test t ON a.AccountNO <> t.AccountNo
Any ideas?
WITH TEST AS
(
SELECT DISTINCT AccountNo, SUBSTRING(APartyNO, 3, LEN(APartyNo)) AS APartyNoCut
FROM (SELECT DISTINCT AccountNo, APartyNo
FROM prf_BatchItems
WHERE BatchID = 127
AND Code1 = 'DEDF'
AND APartyNo NOT LIKE '04%'
AND ( Left(APartyNo,2) = '02'
OR Left(APartyNo,2) = '03'
OR Left(APartyNo,2) = '07'
OR Left(APartyNo,2) = '08')
GROUP BY AccountNo, APartyNo
UNION
SELECT DISTINCT AccountNo, APartyNo
FROM prf_BatchItemAdditionalAPartyNos
WHERE BatchID = 127
GROUP BY AccountNo, APartyNo) a
)
SELECT Code2, TypeName, CallTypeName, --SUM([Count]),
SUM(Duration), SUM(CostGrossExGST)
FROM
(
SELECT 'WITHOUT STD' AS Type,
Code2, b.TypeName, CallTypeName,
--SUM([COunt]) AS Count,
SUM(DurationSecond) AS Duration,
SUM(a.CostGrossExGSt) AS CostGrossExGST
FROM prf_BatchItems a
INNE开发者_运维知识库R JOIN (SELECT * FROM dbo.prf_BillTypeCodes WHERE BillTypeID = 2) b ON a.Code2 = b.BillCodeName
INNER JOIN Test t ON a.AccountNO <> t.AccountNo
where BatchID = 127
AND Code1 = 'DC'
AND ServiceTypeName = 'MobileNet'
AND CallTypeName = 'National Direct Dialled calls'
AND (LEFT(BPartyNo,2) <> '02' AND LEFT(BPartyNo,2) <> '03' OR LEFT(BPartyNo,2) <> '07' OR LEFT(BPartyNo,2) <> '08')
AND BPartyNo NOT LIKE '04%'
AND BPartyNo NOT LIKE '1%'
GROUP BY --a.AccountNo,
Code2, b.TypeName, CallTypeName) zz
GROUP BY Code2, TypeName, CallTypeName
looks like one of the AccountNO in this line INNER JOIN Test t ON a.AccountNO <> t.AccountNo
is not an integer and has a valuse that can't be converted to an integer
what is the data type of the column in both tables
Some times, the values in the sql query have values larger than an integer can hold, so change the type of data from int (integer ) to Bigint, problem is solved.
精彩评论