2017-02-22 16 views
0

Вот моя строка запроса, где я получаю сообщение об ошибке msg 8114, уровень 16, состояние 5. У меня есть сумма и округление именно так, как мне это нужно - просто не может получить + «%» часть для работы:Ошибка при добавлении + '%' в sql server - получите сообщение об ошибке «Ошибка преобразования типа данных varchar в числовой»

SUM(CAST(ROUND(ENROLLMENT,1) AS DECIMAL (10,2)))/SUM(CAST(ROUND(CAPACITY,1) AS DECIMAL (10,2))) *100 + '%' AS 'fill rate %' 

Любая помощь будет оценен по достоинству!

+0

Ваше смешение концепций формата данных и отображения с типом данных. вы не можете комбинировать данные STRING по типу данных NUMERIC, если ваш конечный результат не является строкой/символом. Вам нужно будет указать десятичное значение в виде строки, чтобы добавить% или оставить значение%, поскольку заголовок столбца уровня заполнения% уже указывает, что это%. – xQbert

ответ

1

Либо отдать свой десятичное в VARCHAR

cast(SUM(CAST(ROUND(ENROLLMENT,1) AS DECIMAL (10,2)))/SUM(CAST(ROUND(CAPACITY,1) AS DECIMAL (10,2))) *100 as varchar(100)) + '%' AS 'fill rate %' 

или просто не добавить%. Заголовок столбца уже Сий это поле% ...

cast(SUM(CAST(ROUND(ENROLLMENT,1) AS DECIMAL (10,2)))/SUM(CAST(ROUND(CAPACITY,1) AS DECIMAL (10,2))) *100 as varchar(100)) AS 'fill rate %' 

Или там, где вы показываете это имеет дисплей добавить «%» справа от поля отображается десятичное значение.

+0

Ты жизнь безопаснее! Я попробовал варчар, но у него не было CAST в самом начале. Большое вам спасибо, я очень благодарен! Я самоучка, и я знаю, что мне гораздо больше нужно учиться! – KLR

+0

Если это поле, которое пользователь может обновить, если вы добавите%, вам придется отключить его при их сохранении. – xQbert

+0

Можно ли связаться с вами напрямую? Если это так, у меня есть еще один запрос, я просто слишком смущен, чтобы опубликовать его на помощь! – KLR