ODBC中ROUND函数报错,求可用的数值舍入替代函数
解决ODBC访问平面文件数据库时ROUND函数报错的替代方案
你遇到的“列未找到”错误,本质是第三方平面文件的ODBC驱动不支持标准SQL的ROUND函数,驱动误将ROUND识别成了列名。以下是几个通用的数值舍入替代方案:
手动实现四舍五入(通用适配)
要保留两位小数的话,可通过“放大+补值+截断+还原”的逻辑模拟四舍五入,不需要依赖任何内置函数:SELECT AUDIT_SPLIT.ACCOUNT_REF, CAST((SUM(AUDIT_SPLIT.GROSS_AMOUNT) * 100) + 0.5 AS INTEGER) / 100.0 FROM AUDIT_SPLIT GROUP BY AUDIT_SPLIT.ACCOUNT_REF若需调整小数位数,直接修改100的倍数即可(比如保留1位用10,3位用1000)。
用截断函数实现非四舍五入的保留(若驱动支持)
如果你的驱动支持TRUNCATE函数,且只需要截断小数(不做四舍五入),可以用:SELECT AUDIT_SPLIT.ACCOUNT_REF, TRUNCATE(SUM(AUDIT_SPLIT.GROSS_AMOUNT), 2) FROM AUDIT_SPLIT GROUP BY AUDIT_SPLIT.ACCOUNT_REFExcel端后置处理
既然是在Excel中执行查询,也可以先把聚合后的原始数值导入Excel,再用Excel自带的ROUND函数在单元格内完成舍入,彻底绕开ODBC驱动的函数限制。
内容的提问来源于stack exchange,提问作者elector
相关产品推荐
相关产品推荐

