То есть столбец, возвращаемый из запроса, может быть только одного типа, верно?Когда вы смотрите на ваш запрос, механизм db видит два типа в операторе CASE
:
CAST(ROUND(CAST(sq.Total_Sales AS FLOAT) / (SUM(pfm.C1)) * 100,0) AS varchar(10)) + '%'
производит VARCHAR(11)
0
в ELSE
часть, это INT
Механизм базы данных пытается объединить их обоих в INT, и так как «5%» не может быть преобразовано в INT, вы получаете ошибку.Вам нужно изменить ELSE 0
на что-то, производящее varchar
, например ELSE '0%'
или даже ELSE ''
.