У меня есть таблица EMP, которая соединена с другой таблицей. В запросе я получал сумму SAL вот так. Я хочу, чтобы эта сумма была округлена до 2 знаков после запятой, но она дает 4 знака после запятой. SAL объявлен как CHAR(9) в таблице EMP.
COALESCE(CAST(SUM(CAST(SAL AS INT))/12 AS DECIMAL(13,2)), 0) as "SUM-SAL"
Вывод отображается как 29364852.000000, но я хочу, чтобы он был округлен до десятичных знаков с разделителями-запятыми.
После запуска вашего кода я получаю только две десятичные цифры после запятой.
Похоже, вы выполняете целочисленное деление, вы когда-нибудь получали что-нибудь, кроме нуля после запятой?
Почему вы храните зарплату как char?


вы можете попробовать, как показано ниже, используя format
пример
DECLARE @test DECIMAL(18,6) = 123.456789
SELECT FORMAT(@test, '##.##')
Если я использую формат, получая ошибку Ошибка преобразования типа данных nvarchar в числовой.
Я думаю, это то, что вы ищете.
DECLARE @test char(9) = '29364852.00'
SELECT Format(cast(@test as decimal(10, 2)), '##,##.#0')
Результат: 29 364 852,00
Если я использую формат, получая ошибку Ошибка преобразования типа данных nvarchar в числовой.
@SRI Пожалуйста, проверьте мой ответ, он также будет работать в более низкой версии SQL Server, где формат() недоступен.
Обычно это задача вашего клиентского приложения форматировать данные на экране пользователя, а не задача базы данных.