Я пытаюсь решить для этого сообщения об ошибке «Ошибка преобразования типа данных varchar в float» в приведенный ниже код. Я пробовал много способов, и эта первая строка сработала. Я думаю, проблема в том, что в таблице есть NULL. Также этот тип данных составляет float
.Ошибка преобразования типа данных varchar в float в case statement
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
Почему вы делаете coalese с 0 и сравнивая результат со строкой? –
Можете ли вы проверить свою колонку для любых не числовых значений, кроме -? Вероятно, это может вызвать ошибку, если столбец имеет алфавитный символ, который не может быть превращен в число. – Vulcronos
Что вы подразумеваете под этим: "- <работает с Integer по столбцу в других таблицах"? Попробуйте удалить SUM() и посмотрите на данные, которые вы пытаетесь использовать СУММ. Есть ли строки, которые не являются ни числами, ни NULL? –