Ошибка получения: подзапрос возвращает более 1 значения

#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