我在SQL Server中有以下SELECT:
SELECT
th.CidadeCod,
th.ContratoCod,
CONVERT(DECIMAL(5,2), ( SUM(th.PlacasLidas)/SUM(th.Trafego) ) * 100) AS [IndiceOCR]
FROM
controle.TrafegoFaixaHora th
INNER JOIN ssis.Contratos c ON th.ContratoCod = c.ContratoCod AND th.CidadeCod = c.CidadeCod
INNER JOIN controle.Equipamentos e ON th.ContratoCod = e.ContratoCod AND th.CidadeCod = e.CidadeCod
WHERE
c.FlagAtivo = 1 AND e.FlagOcr = 1
GROUP BY
th.CidadeCod,
th.ContratoCod
但是返回了错误:
Msg 8115,Level 16,State 2,Line 2 将表达式转换为数据类型int的算术溢出错误。
我该怎么办?
答案 0 :(得分:0)
试试这个
SELECT
th.CidadeCod,
th.ContratoCod,
( SUM(CONVERT(DECIMAL(18,2),th.PlacasLidas))/SUM(th.Trafego) ) * 100 AS [IndiceOCR]
FROM
controle.TrafegoFaixaHora th
INNER JOIN ssis.Contratos c ON th.ContratoCod = c.ContratoCod AND th.CidadeCod = c.CidadeCod
INNER JOIN controle.Equipamentos e ON th.ContratoCod = e.ContratoCod AND th.CidadeCod = e.CidadeCod
WHERE
c.FlagAtivo = 1 AND e.FlagOcr = 1
GROUP BY
th.CidadeCod,
th.ContratoCod
此错误发生,因为您的号码大于五位数。
我相信当你划分两个int时,你需要在操作前转换一个。