如何修复此数据类型错误?

How do I fix this data type error?

当我在查询中插入以下内容时出现错误

,max(case when patins.rank = 1.0 then CLAIMS.[TOTALPAID] else '' end)

TotalPaid 是一个包含的字段,例如:445.45.

我收到的消息是:

Error converting data type varchar to numeric

但是,这个 case 语句有效:

,max(case when patins.rank = 1.0 then INSCOMP.ORG else '' end)

Inscomp.Org就给保险公司吧

问题:

字段 TOTALPAID 是数字。 Case 语句可以 return 相同 数据类型的值。如果满足条件,您正在尝试 return 一个数值,如果不满足,则尝试 return 一个 varchar 值。就是这个问题。

解法:

  1. 您可以转换一个字段以匹配其他字段的类型

    max(case when patins.rank = 1.0 then CAST(CLAIMS.[TOTALPAID] as varchar(max)) else '' end)
    
  2. 你可以returnNULL如果你愿意。不会有任何问题的。

    max(case when patins.rank = 1.0 then CLAIMS.[TOTALPAID] else NULL end)
    
  3. 或者只删除 "else" 部分

    max(case when patins.rank = 1.0 then CLAIMS.[TOTALPAID] end)
    

    不满足条件则returnNULL

case 表达式的所有分支必须return 相同的数据类型。所以你不能有其中一个 return totalpaid,它是一个数字列,而另一个 return '',它是一个字符串文字。相反,您可以 return 一个实际的 null:

max(case when patins.rank = 1.0 then CLAIMS.[TOTALPAID] else null end)

实际上,由于 case 表达式的默认 return 值无论如何都是 null,您可以省略 else 子句:

max(case when patins.rank = 1.0 then CLAIMS.[TOTALPAID] end)