我遇到问题总结列的实际值。看起来我只是被归还了行数。我有一张学生的桌子,他们上课了,课程的价值是多少。
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似乎只是添加行数。
答案 0 :(得分:2)
您必须指定小数的大小。在您的create语句中尝试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 |
+--------------+---------+
答案 1 :(得分: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
)