복붙노트

[SQL] 동적 SELECT TOP @var에서 SQL 서버

SQL

동적 SELECT TOP @var에서 SQL 서버

어떻게 SQL Server의 반환에 행의 양을 설정 동적 변수를 가질 수있다? 다음은 SQL 서버 2005 +의 올바른 구문되지 않습니다 :

DECLARE @count int
SET @count = 20

SELECT TOP @count * FROM SomeTable

해결법

  1. ==============================

    1.

    SELECT TOP (@count) * FROM SomeTable
    

    이것은 단지 SQL로 작동합니다 2005 +

  2. ==============================

    2.구문은 "선택 최고 (@var는) ..."단지 2005 + SQL 서버에서 작동합니다. SQL 2000의 경우, 당신은 할 수 있습니다 :

    구문은 "선택 최고 (@var는) ..."단지 2005 + SQL 서버에서 작동합니다. SQL 2000의 경우, 당신은 할 수 있습니다 :

    set rowcount @top
    
    select * from sometable
    
    set rowcount 0 
    

    도움이 되었기를 바랍니다

    Oisin.

    (- 감사 augustlights 행 개수와 @@ 행 개수를 대체하기 위해 편집)

  3. ==============================

    3.x0n의 예에서, 그것은해야한다 :

    x0n의 예에서, 그것은해야한다 :

    SET ROWCOUNT @top
    
    SELECT * from sometable
    
    SET ROWCOUNT 0
    

    http://msdn.microsoft.com/en-us/library/ms188774.aspx

  4. ==============================

    4.그것도 가능한 동적 SQL을 사용하고 간부 명령을 실행합니다 :

    그것도 가능한 동적 SQL을 사용하고 간부 명령을 실행합니다 :

    declare @sql  nvarchar(200), @count int
    set @count = 10
    set @sql = N'select top ' + cast(@count as nvarchar(4)) + ' * from table'
    exec (@sql)
    
  5. ==============================

    5.또는 당신은 괄호 안에 변수를 넣어

    또는 당신은 괄호 안에 변수를 넣어

    DECLARE @top INT = 10;
    
    SELECT TOP (@Top) *
    FROM <table_name>;
    
  6. ==============================

    6.

    declare @rows int = 10
    
    select top (@rows) *
    from Employees
    order by 1 desc -- optional to get the last records using the first column of the table
    
  7. from https://stackoverflow.com/questions/175962/dynamic-select-top-var-in-sql-server by cc-by-sa and MIT license