当我在查询中插入以下内容时出现错误
,max(case when patins.rank = 1.0 then CLAIMS.[TOTALPAID] else '' end)
TotalPaid
是一个字段,其中包含:445.45
。
我收到的信息是:
将数据类型varchar转换为数字
时出错
但是,这个案例陈述有效:
,max(case when patins.rank = 1.0 then INSCOMP.ORG else '' end)
Inscomp.Org
只给保险公司。
答案 0 :(得分:1)
<强>问题:强>
字段TOTALPAID
是数字。 Case语句可以返回相同数据类型的值。您正在尝试在满足条件时返回数值,如果不满足则尝试返回varchar值。这就是问题所在。
<强>解决方案:强>
您可以投射字段以匹配其他
的类型max(case when patins.rank = 1.0 then CAST(CLAIMS.[TOTALPAID] as varchar(max)) else '' end)
如果需要,您可以返回NULL
。没有任何问题。
max(case when patins.rank = 1.0 then CLAIMS.[TOTALPAID] else NULL end)
或者只是删除“其他”部分
max(case when patins.rank = 1.0 then CLAIMS.[TOTALPAID] end)
如果不满足条件,它将返回NULL。
答案 1 :(得分:1)
case
表达式的所有分支必须返回相同的数据类型。因此,您不能让其中一个返回totalpaid
,这是一个数字列,另一个返回''
,这是一个字符串文字。相反,您可以返回实际的null
:
max(case when patins.rank = 1.0 then CLAIMS.[TOTALPAID] else null end)
实际上,由于case
表达式的默认返回值仍为null
,您可以省略else
子句:
max(case when patins.rank = 1.0 then CLAIMS.[TOTALPAID] end)