SUM округление десятичных разрядов 2

У меня есть таблица 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, но я хочу, чтобы он был округлен до десятичных знаков с разделителями-запятыми.

Обычно это задача вашего клиентского приложения форматировать данные на экране пользователя, а не задача базы данных.

Vladimir Baranov 28.02.2019 08:57

После запуска вашего кода я получаю только две десятичные цифры после запятой.

Almazini 28.02.2019 09:18

Похоже, вы выполняете целочисленное деление, вы когда-нибудь получали что-нибудь, кроме нуля после запятой?

Joakim Danielson 28.02.2019 10:03

Почему вы храните зарплату как char?

Salman A 28.02.2019 10:18
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
4
393
3

Ответы 3

вы можете попробовать, как показано ниже, используя format

пример

 DECLARE @test DECIMAL(18,6) = 123.456789
    SELECT FORMAT(@test, '##.##')

Если я использую формат, получая ошибку Ошибка преобразования типа данных nvarchar в числовой.

SRI 28.02.2019 09:29

Я думаю, это то, что вы ищете.

DECLARE @test char(9) = '29364852.00'
SELECT Format(cast(@test as decimal(10, 2)), '##,##.#0') 

Результат: 29 364 852,00

Если я использую формат, получая ошибку Ошибка преобразования типа данных nvarchar в числовой.

SRI 28.02.2019 09:28

@SRI Пожалуйста, проверьте мой ответ, он также будет работать в более низкой версии SQL Server, где формат() недоступен.

Suraj Kumar 28.02.2019 09:29

Вы можете попробовать следующий запрос.

DECLARE @test DECIMAL(18,6) = 123.456789
Select cast(@test as decimal(10, 2))

или

DECLARE @test char(10) = '123.456789'
Select cast(@test as decimal(10, 2))

Живая демонстрация

поле объявлено как char

SRI 28.02.2019 09:36

Другие вопросы по теме