Распечатки SQL плавают с большим десятичным знаком - PullRequest
0 голосов
/ 17 октября 2018

Я работаю над решением, чтобы получить процент студентов. Мне нужно было только 2 десятичных знака, поэтому я попробовал это

select ROUND(count(fname) * 100.0/(select count(*) from stud_info  WHERE grade = 'FOUR'),2)as 'Total',
status as 'NutritionalStatus'
from stud_info
where grade = 'FOUR'
group by status

, затем он напечатает до 11 знаков после запятой с нулями.помогите с чем не так?У меня MS SQL 2014

1 Ответ

0 голосов
/ 17 октября 2018

Во-первых, я бы посоветовал вам написать это следующим образом:

select status,
       avg(case when grade = 'FOUR' then 1.0 else 0 end) as Total
from stud_info
where grade = 'FOUR'
group by status;

Затем, если вам нужно два десятичных знака, преобразуйте в десятичное:

select status,
       convert(decimal(6, 2),
               avg(case when grade = 'FOUR' then 1.0 else 0 end)
              ) as Total
from stud_info
where grade = 'FOUR'
group by status;

round() изменяет значение , но оно не меняет тип .Уровень приложения / представления все еще может решить показать ненужные нули.

Вы также можете использовать format() или str() для преобразования значения в строку.

...