Возможно, самый простой способ:
select CAST(REPLACE([Amount], ',', '.') as decimal(10, 4))
Примечание. Не используйте values
в качестве псевдонима столбца.Это ключевое слово SQL и зарезервированное слово SQL Server.
Ваша проблема в том, что в столбце есть неверные значения.Вы можете избежать ошибки, используя:
select TRY_CAST(REPLACE(Amount, ',', '.') as decimal(10, 4))
Вы можете найти проблемы, используя:
select amount
from t
where TRY_CAST(REPLACE(Amount, ',', '.') as decimal(10, 4)) is null and Amount is not null;
Мораль: Никогда хранить числовые значения в строке.