source

SQL Server의 select 문에 TOP가 있는 변수를 동적으로 만들지 않고 사용

lovecheck 2023. 4. 7. 21:33
반응형

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

반응형