sql - 将 varchar 值“6276.54”转换为数据类型 int 时转换失败
问题描述
我有以下查询,不断抛出转换错误。我已经尝试了很多方法来完成这项工作,但仍然遇到同样的错误。消除过程我现在认为这与硬编码的 0.715 值有关。我不确定是否或如何强制将其设为小数,或者在我的代码开头使用此 SET 和变量是否更好。
SELECT CAST(DATEPART(yyyy, YEAR) as INT) AS YEAR,
COUNT(ID) AS ID,
SUM(VALUE) AS VALUE,
SUM(PREMIUM) AS PREMIUM,
SUM(try_convert(float,USERID1)) AS VALUE1,
COALESCE(SUM(PREMIUM)/(SUM(try_convert(float,NULLIF(USERID1,0)))*0.715),0) AS 'PROFIT'
SUM(CAST(USERID1 AS float))/SUM(PREMIUM) AS 'PROFIT%'
INTO #YEAR_VALUE
FROM #DATA LT
INNER JOIN dbo.AccountDB P ON LT.ID = P.ID
GROUP BY INCEPTDATE
任何帮助将不胜感激。
提前致谢
解决方案
你有一些逻辑回到前面,你需要先try_parse,然后再做nullif。如果 Try_parse 不能强制转换为指定的类型,它通常会返回 null。然后您需要将 null 转换为 0.0
合并(总和(溢价)/(总和(nullif(try_convert(浮点数,'userId),0.0))* 0.715),0.0)作为'利润'
此外,如果期望浮点数或小数,则使用 0.0 表示零
提示:保存你和下一个人的眼睛,不需要使用大写。那是70年代的事了
推荐阅读
- sql - SQL GROUP BY 不会为两个表的组合返回正确的结果
- facebook - FBSDK 共享对话框不起作用 React-native ios 模拟器
- token - 微服务授权
- actionscript-3 - 对齐 VGroup 中的子菜单
- vhdl - 双向端口有哪些缺点(Verilog/VHDL)
- c++ - C++:未计算上下文中的 lambda 表达式
- reactjs - 使用 React 图标时未找到模块错误
- javascript - 两个单独的滚动区域简单的解决方案
- android - Crashlytics 和默认异常处理程序
- mysql - MYSQL 将两个表与自创列组合在一起