특정 테이블에서 n번째로 큰 값을 리턴하는 프로시저 > db

본문 바로가기
사이트 내 전체검색

db

특정 테이블에서 n번째로 큰 값을 리턴하는 프로시저

페이지 정보

작성자 서방님 댓글 0건 조회 158회 작성일 06-09-12 18:04

본문

이 프로시저는 테이블명, 컬럼명, n번째 숫자, 리턴파라미터 등을 입력하면 해당 테이블의 컬럼에서 n번째로 큰 값을 리턴하는 프로시저이다.
예를 들어 'products', 'UnitPrice' , 13 , @res 라고 입력하면 13번째로 큰 값을 리턴하고 찾지 못하면 에러를 리턴한다.

[사용방법]
declare @res decimal (10,4)
exec max_nth_value 'products','unitprice',13,@res OUTPUT
print @res

  • 사용가능DB : SQL Server
  • 라이센스: freeware
  • 저자: Eli Leiba (iecdba@Yahoo.com)
  • 난이도: 초급

[소스]

create proc max_nth_value (@tablename varchar(50),
                           @column varchar(50),
                           @n int,
                           @res decimal (10,4) OUTPUT)
AS
set nocount on
declare @sqlStatment varchar(200)
set @sqlStatment = 'select a.' + @column + ' from ' + @tableName + ' a ' +
                   'where ' + convert (varchar(10),@n) +
                   '=(select count(distinct ' + @column + ')' +
                   ' from ' + @tableName + ' b ' +
                   ' where ' + 'a.'+ @column + ' <= ' + 'b.' + @column + ')'
create table #tres (x decimal (10,4))
insert into #tres exec (@sqlStatment)
if @@rowcount = 0 print 'No value found!' else select @res = x from #tres
set nocount off
go

 

자료출처 : http://korea.internet.com/

댓글목록

등록된 댓글이 없습니다.

회원로그인

접속자집계

오늘
129
어제
225
최대
1,347
전체
154,888
Latest Crypto Fear & Greed Index

그누보드5
Copyright © 서방님.kr All rights reserved.