#sql #sql-server #ssms-2017
#sql #sql-сервер #ssms-2017
Вопрос:
Я просто запускаю этот запрос:
select
sc.Studentid as [Student ID], StudentName, semester,
sum(c.credit) as Creditsemester,
cast(sum(w.[Weight]*c.credit) / sum(c.credit) as decimal(5, 2)) as [Semester GPA],
(select sum(c.credit) from StudentScore) as cumulativecredit
from
StudentScore sc
join
Student s on s.Studentid = sc.Studentid
join
Course c on sc.CourseID = c.CourseID
join
[weight] w on sc.Grade = w.GRADE
group by
sc.semester, sc.Studentid, s.StudentName
и я получаю эту ошибку:
Сообщение 512, уровень 16, состояние 1, строка 163
Подзапрос вернул более 1 значения. Это не разрешено, когда подзапрос следует =, !=, <, <= , >, >= или когда подзапрос используется как выражение.
Какие-либо ide для решения этой проблемы?
Комментарии:
1. Примеры данных, желаемые результаты и более простой запрос — все это поможет.
2. Ошибка сообщает вам о проблеме здесь; что насчет ошибки, которую вы не понимаете, поэтому мы можем объяснить это подробнее.
Ответ №1:
Это неверно:
(select sum(c.credit) from StudentScore) as cumullativecredit
Я не уверен, что вы имеете в виду, но у вас есть ссылка на внешний запрос здесь. Поскольку внешний запрос является запросом агрегации, sum()
он ссылается на внешний запрос, поэтому это не запрос агрегации.
Совершенно неясно, что вы хотите сделать. Если бы вы ссылались на таблицу в подзапросе, это не привело бы к возникновению этой ошибки:
(select sum(ss.credit) from StudentScore ss) as cumulativecredit