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
INNER 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