如何按年份为前25名学生创建存储过程。 因此,Proc应该把年份作为参数并返回,学生ID, 年度商标总和
Alter PROCEDURE getstudents
(
@year INT
)
AS
BEGIN
SELECT student-name FROM tbl_Students WHERE year=@year
Thanks
答案 0 :(得分:2)
试试这个 -
ALTER PROCEDURE dbo.getstudents
@year INT
AS
BEGIN
SELECT TOP 25
student_name
, student_id
, marks = SUM(marks)
FROM dbo.tbl_Students
WHERE [Year] = @year
GROUP BY
student_name
, student_id
ORDER BY marks DESC
END
或者这个 -
ALTER PROCEDURE dbo.getstudents
@year INT
, @count INT
AS
BEGIN
SELECT student_name, student_id, marks
FROM (
SELECT
student_name
, student_id
, marks
, rn = ROW_NUMBER OVER (ORDER BY marks DESC)
FROM (
SELECT
student_name
, student_id
, marks = SUM(marks)
FROM dbo.tbl_Students
WHERE [Year] = @year
GROUP BY
student_name
, student_id
) t
) t2
WHERE t2.rn <= @count
END
答案 1 :(得分:2)
试试这个,
ALTER PROCEDURE getstudents
@year INT
AS
BEGIN
SELECT TOP 25 [student-name]
FROM tbl_Students WHERE year=@year
END
答案 2 :(得分:1)
你以正确的方式传递了参数。
现在,您必须在SP内部查询您想要的信息。
因此最终选择会显示您提取的结果。
显然关于经销商学生,学生i等等,你在这里写下你的数据库模型。