我正试图解决以下代码中出现的此错误消息“将数据类型varchar转换为float时出错”。我尝试了很多方法,第一条线已经奏效。我认为问题是表中有一个NULL。此次数据类型为float
。将数据类型varchar转换为float case case语句时出错
SELECT
'May' as Month_Name -- have this for all table months that I pull data from.
, SUM(
CASE
WHEN [All Gaps Mar] = '-' THEN 0
ELSE [All Gaps Mar]
END
) AS AllGapsFeb -- works with Integer on column in other tables
, SUM(
CASE
WHEN coalesce([All Gaps Mar], 0) = '-' THEN 0
ELSE [All Gaps Mar]
END
) AS AllGapsMarch
下面是其他企图得到它从我发现SO和互联网工作,但我得到了同样的错误:
, SUM(
CASE
WHEN [All Gaps Mar] = '-' THEN convert(integer, [All Gaps Mar])
ELSE ([All Gaps Mar])
END
) AS AllGapsMarch
, SUM(
CASE
WHEN [All Gaps Mar] = '-' THEN 0
ELSE convert(integer, [All Gaps Mar])
END
) AS AllGapsMarch
, CASE
WHEN [All Gaps Mar] = '-'
THEN ISNUMERIC(convert(integer, Sum([All Gaps Mar])))
ELSE 0
END AS numeric_count
,你为什么和0做coalese并用字符串比较结果? – 2014-09-03 18:02:41
你可以检查你的专栏以外的任何非数字值吗?只要列中的字母字符不能变成数字,就可能发生错误。 – Vulcronos 2014-09-03 18:04:28
这是什么意思:“ - <在其他表中的列上使用整数”?尝试删除SUM()并查看您尝试进行SUM操作的数据。有没有不是数字或NULL的行? – 2014-09-03 18:04:55