2012-05-22 2 views
1

상위 행을 선택할 수있는 변수가 필요합니다. 변수를 기반으로 상위 행을 선택할 수 있습니다. 그러나 변수가 제공되지 않은 경우 모든 행을 선택하고 싶습니다. SQL 쿼리의 최상위 수

현재 나는이 쿼리를 사용하고 있습니다 :

DECLARE @TOPCOUNT int; 
SET @TOPCOUNT=10; 

SELECT TOP(@TOPCOUNT) * FROM TABLE1 

업데이트 :

  1. 원래 쿼리가 매우 길고 복잡하다, 그래서 않고 전체 쿼리를 다시 작성하지 않습니다 else 절의 톱 카운트.

  2. 나는 동적 쿼리가 그 반향 때문에 사용하고 싶지 않습니다.

답변

2

뭔가 : 위의 UPDATE 후

DECLARE @TOPCOUNT int; 
--SET @TOPCOUNT=10; 

IF @TOPCOUNT IS NULL 
    SELECT * FROM TABLE1 
ELSE 
    SELECT TOP(@TOPCOUNT) * FROM TABLE1 

추가 -이 저장 프로 시저의 매개 변수 인 경우, 단지 @TOPCOUNT에 대한 기본을 제공하려면

@TOPCOUNT INT = 2147483647 --max size of INT 
+0

솔루션을 제공해 주셔서 감사합니다 Barry! –

0

이와 비슷한 것이 도움이 될 것입니다. 모든 행을 원하면 @TOPCOUNT를 -1로 초기화하십시오. 이 같은

IF @TOPCOUNT = -1 BEGIN 
    SELECT * FROM TABLE1 
END 
ELSE BEGIN 
    SELECT TOP(@TOPCOUNT) * FROM TABLE1 
END 
0
IF @TOPCOUNT IS NULL SET @TOPCOUNT=2147483647 
+0

을 아무런 행이 아니라 OP가 요청할 때 ALL 행을 선택하십시오. 'IF @TOPCOUNT IS NULL SET @ TOPCOUNT = 2147483647 \\ INT의 최대 크기'여야합니까? –

+0

불행히도, 나는 현재 그것을 테스트 할 수 없지만, 나는 top 0이 top을 전혀 지정하지 않는 것과 같다고 생각합니다. – MichelZ

+1

아니요, 'TOP (0)'이 (가) 깜짝 - 0 행을 반환합니다! –