【发布时间】:2018-05-22 13:46:48
【问题描述】:
我运行以下查询:
create function passs (@studentid nvarchar(50),@courseid nvarchar(50))
returns char
as
begin
declare @k char
if((select Grades.grade from Grades where Grades.Courses_id=@courseid AND
Students_id=@studentid) >60)
set @k='pass'
else
set @k='no pass'
return @k
end
当我运行这个时:
select Grades.Courses_id,dbo.pass(Grades.Students_id,Grades.Courses_id)
,Grades.Students_id,Grades.grade from Grades
我明白了
消息 512,第 16 级,状态 1,第 1 行 子查询返回超过 1 个值。当子查询跟随 =、!=、、>= 或子查询用作表达式时,这是不允许的。
【问题讨论】:
-
我认为错误非常明显。你需要解释该怎么做。还要用您正在使用的数据库标记问题。
-
您的学生/课程组合获得了不止一个成绩。如果他们在一行中获得
50而在另一行中获得70,您想做什么?拿他们的最低成绩、最高成绩、平均成绩,还是别的什么? -
您可以使用
exists来确定学生是否有任何个超过60的班级成绩。
标签: sql-server tsql