SQL Server转换类型

时间:2016-10-21 11:40:09

标签: sql sql-server type-conversion

我在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的算术溢出错误。

我该怎么办?

1 个答案:

答案 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时,你需要在操作前转换一个。