我在下面的查询中遇到问题。的问题是:将表达式转换为数据类型的算术溢出错误int
消息8115,级别16,状态2,行1个 算术溢出错误将表达式转换为数据类型int
问题位于该线以下的代码。
INNER JOIN Test t ON a.AccountNO <> t.AccountNo
任何想法?
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
它们都是VARCHAR(32) – dcpartners 2010-08-10 00:55:47
在这种情况下,逐个运行所有查询,从一个查询开始并继续,直到您运行所有这些查询,失败的查询会遇到问题,然后调查那些存储在这些查询中的内容专栏 – SQLMenace 2010-08-10 01:01:00
你是对的!这个问题并不是真的在这个陈述上。我确实有SUM(DurationSecond),它在加入后比INT大。 :) 再次感谢。 – dcpartners 2010-08-10 01:15:19