programing

동적으로 만들지 않고 SQL Server의 select 문에서 TOP과 함께 변수 사용

new-time 2020. 5. 7. 22:20
반응형

동적으로 만들지 않고 SQL Server의 select 문에서 TOP과 함께 변수 사용


이 질문에는 이미 답변이 있습니다.
declare @top  int
set @top = 5
select top @top * from tablename

가능합니까?또는 그러한 논리에 대한 아이디어가 있습니까 (동적 쿼리를 사용하고 싶지 않습니다)?


예. SQL Server 2005에서는

top

에서 변수를 사용할 수 있습니다 .

select top (@top) * from tablename

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 

출처


이 스레드에는 여러 개의 회신이 있기 때문에 2005 이상에서이를 수행 할 수 있습니다.덜 알려진 것은 SET ROWCOUNT를 사용하여 2k로도이를 달성 할 수 있다는 것입니다.

  -- 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

마지막에 SET ROWCOUNT 0을 잊어 버린 경우 한계가 지속됩니다. 버그를 찾기가 매우 어렵습니다. :-)참고 URL :

https://stackoverflow.com/questions/1927450/use-variable-with-top-in-select-statement-in-sql-server-without-making-it-dynami

반응형