2017-01-26 3 views
0

У меня возникла проблема Суммирование фактических значений столбцов. Кажется, я просто возвращаю счет Row. У меня есть таблица студентов, которые взяли уроки и количество кредитов, которые класс стоил.Добавление кредитов (десятичная)

Create table #tempy (
     student_name varchar(50), 
     class varchar(50), 
     credits decimal 
     ) 
Insert into #tempy (student_name, class, credits) 
Values('Chris','Math', 0.5), ('Chris', 'Science', 0.5), ('Jill', 'Reading', 1.0), ('Sarah', 'Math',0.5) 
Select student_name, Sum(credits) as credits 
From #tempy 
Group by student_name 
Drop Table #tempy 

У Криса должно быть в общей сложности 1 кредит. Вместо этого я получаю 2. То же самое с Сарой, она должна получать .5 кредитов. Но получает 1, как если бы он просто добавлял количество строк.

ответ

2

Вы должны указать размер десятичной дроби. попробуйте decimal(9,2) в вашем заявлении о создании.

create table #tempy (
     student_name varchar(50), 
     class varchar(50), 
     credits decimal(9,2) 
     ) 
Insert into #tempy (student_name, class, credits) Values 
    ('Chris','Math', 0.5) 
, ('Chris', 'Science', 0.5) 
, ('Jill', 'Reading', 1.0) 
, ('Sarah', 'Math',0.5) 
Select student_name, credits=sum(credits) 
From #tempy 
Group by student_name 
Drop Table #tempy 

приводит

+--------------+---------+ 
| student_name | credits | 
+--------------+---------+ 
| Chris  | 1.00 | 
| Jill   | 1.00 | 
| Sarah  | 0.50 | 
+--------------+---------+ 
0

Вы должны указать точность вашего decimal поля; как это, действует как поле по умолчанию decimal(18,0) (18 цифр с 0 десятичными знаками).

Это должно сделать:

Create table #tempy (
    student_name varchar(50), 
    class varchar(50), 
    credits decimal(5,2) -- 5 digits, 2 of them decimals 
    ) 
Смежные вопросы