--看看这个可以吗?
create proc proc_score
as
select 姓名,学好,数学+物理+化学 as 总分,名次=(select count(*)+1 from 成绩表 where (数学+物理+化学)>a.总分)
from 成绩表 a
create proc proc_score
as
select 姓名,学好,数学+物理+化学 as 总分,名次=(select count(*)+1 from 成绩表 where (数学+物理+化学)>a.总分)
from 成绩表 a
create table 成绩表(姓名 varchar(10),学号 int,数学 int,物理 int,化学 int)--建立测试表
--插入数据
insert 成绩表
select 'aa',001,87,89,56
union select 'bb',002,88,78,45
union select 'cc',003,88,88,56
union select 'dd',004,23,45,98
--建立存储过程
create proc proc_score
as
select 姓名,学号,数学+物理+化学 as 总分,名次=(select count(*)+1 from 成绩表 where (数学+物理+化学)>(a.数学+a.物理+a.化学))
from 成绩表 a
order by 名次
go
--执行存储过程
exec proc_score
--结果
/*
姓名 学号 总分 名次
---------- ----------- ----------- -----------
aa 1 232 1
cc 3 232 1
bb 2 211 3
dd 4 166 4(所影响的行数为 4 行)
*/