2009-12-18 5 views

답변

286

예, SQL Server 2005에서는 top 절에 변수를 사용하는 것이 가능하다.

select top (@top) * from tablename 
+0

감사합니다 :-) 버그를 찾기 위해 매우 열심히 끝낼 것, 정말 도움이 나에게!!! – Paresh

+0

그것은 완전히 별나다. .. 나는 이것을 알고 있지 않았다. 그리고 나는 이것 위에서 조금만 붙들 게되었다. 고맙습니다 (+1) – Christos

38

SQL Server 2005에서는 실제로 변수, 식 또는 문을 사용하여 TOP 절을 매개 변수화 할 수 있습니다. 당신이 좋아하는 일을 할 수 있도록 :

SELECT TOP (@foo) a FROM table ORDER BY a 

SELECT TOP (SELECT COUNT(*) FROM somewhere else) a FROM table ORDER BY a 

SELECT TOP (@foo + 5 * 4/2) a FROM table ORDER BY a 

Source

24

2005 년 이후에는이 스레드에 여러 개의 답글이 있으므로이 작업을 수행 할 수 있습니다.

알려지지 않은 점은 SET ROWCOUNT를 사용하여 2k에서도이를 달성 할 수 있다는 것입니다. 당신이 마지막에 SET의 ROWCOUNT 0을 잊어 버린 경우

-- Works in all versions 
    SELECT TOP 10 

    -- Does not work on 2000 
    SELECT TOP (10) 
    SELECT TOP (@rows) 

    -- Works in both 2ooo and 2oo5 
    SET ROWCOUNT @max 

    SELECT * 
    FROM ... 

    SET ROWCOUNT 0 

참고, 한계는 .. 계속하고 당신이 당신의 노력

+4

SET ROWCOUNT는 실행 계획에 영향을 미치지 않으므로 SQL 2005에서 TOP을 사용하는 것이 좋습니다. – Guffa

+0

대체 대답 인 – Paresh

+2

+1에 대해 감사 드리며 SET ROWCOUNT에 대한 토론을하십시오. 이것은 내가 사용했던 해결책이 아니지만, 당신이 그것을 가져다 준 것을 좋아합니다. – Sam

관련 문제