-1

私はテーブルを持っています:

create table marks(stdName nvarchar(30), marks float)
insert into marks
select 'std1', 98
union all select 'std2', 96
union all select 'std3', 95
union all select 'std4', 97
union all select 'std5', 93

指定された入力パラメーターとしてn 番目に高いマークを持つ行を選択するストアド プロシージャを作成したいと考えています。 .

4

2 に答える 2

0

関数でcteを使用できます。ROW_NUMBER

WITH cte AS(
    SELECT  stdName
    ,       marks
    ,       ROW_NUMBER()OVER(ORDER BY marks DESC)As MarkRank
    from marks
)
SELECT stdName, marks
FROM cte
WHERE MarkRank = @rank
于 2012-05-18T00:44:28.987 に答える
-1

私はこの問題を解決しました。ティムの助けに感謝します。ストアドプロシージャと少し混乱しました。

create procedure showmarks
(@rank int)
as
    begin

WITH cte AS(
    SELECT  stdName
    ,       marks
    ,       ROW_NUMBER()OVER(ORDER BY marks DESC)As MarkRank
    from marks
)
SELECT stdName, marks
FROM cte
WHERE MarkRank = @rank
end
于 2012-05-18T08:23:07.527 に答える