【发布时间】:2017-03-03 17:07:00
【问题描述】:
我在 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
但是返回错误:
消息 8115,第 16 级,状态 2,第 2 行 将表达式转换为数据类型 int 的算术溢出错误。
我该怎么办?
【问题讨论】:
-
th.PlacasLidas和th.Trafego的数据类型是什么? -
如果去掉 CONVERT 语句,返回什么值?我认为您转换的小数点的大小可能对于您的结果来说太小了?
-
打破此列,“CONVERT(DECIMAL(5,2), (SUM(th.PlacasLidas)/SUM(th.Trafego)) * 100)”并尝试显示错误的操作.中断和调试...
-
由于错误是关于转换为 int 我怀疑 PlacesLidas 和 Trafego 都是 int 类型。所以你有2个问题。第一个问题是您的计算结果将是一个 int,其小数部分为(不四舍五入!),第二个问题是它不适合您 decimal(5,2)
标签: sql sql-server type-conversion