Это происходит потому, что coalesce
ожидает, что a.number
, nvarchar
, будет совместимо с 0
, int
.Вот где происходит сбой преобразования, поскольку nvarchar
и int
несовместимы.
Замена 0
на '0'
должна решить проблему:
CAST(COALESCE(a.number, `0`), AS DECIMAL(10,2))
Примечание: Если это не устаревшая база данных, которую вы не можете контролировать, вам следует рассмотреть возможность изменения типа поля number
на число, ну, например, decimal(10,2)
.