2012-05-30 3 views
1

문제의 제목이 가장 좋지는 않지만 문제가 더 정확한 설명을 찾으면 다른 제목을 찾을 수 없습니다. 편집 해 주시면 감사하겠습니다.EXEC (@sql)에서 값 검색

내가 지금

SELECT top (value) field, field2 FROM table 

실제로 내가 필요로하는 것을 의미이 쿼리

SELECT @first = min(field2) FROM (SELECT top (value) field, field2 FROM table) 

에서 하위 쿼리의 이전 쿼리와 같은 상위 절에 변수 매개 변수가있는 dymanic SQL 쿼리를 구축해야 exec(@sql)은 SQL 상위 doesnt가 ​​동적 값을 사용하기 때문에 쿼리를 작성하지만 exec(@sql)은 내가 아는 한 매개 변수를 검색 할 수 없습니다. 비슷한 케이스에서 값을 검색하기 위해 sp_executesql을 읽었지 만 상위 절 옆에 동적 값이있는 쿼리를 작성할 수는 없습니다. 내가 무엇을 할 수 있을지?

답변

2

당신이 2000 여전히있는 경우, 동적 정상을 할 수있는 변수를 사용할 수 있습니다 SQL 서버 2005 또는 위의 경우, 당신은 변수

2005 및 구문 설정의 ROWCOUNT를 사용할 수 있습니다

DECLARE @RowCount int -- =25 -- sql server 2008 allows to assign when declaring 
SELECT @RowCount = 25 

SELECT TOP (@RowCount) * FROM table1 

2000 구문 고정에 대한

DECLARE @RowCount int 
SELECT @RowCount = 25 

SET ROWCOUNT @RowCount 
SELECT * FROM table1 

SET ROWCOUNT 0 -- make sure to set back to 0 otherwise 
       -- queries below will return 25 rows 
2
declare @top int = 10 

select top (@top) field, field2 from table 
+0

감사합니다 - 당신은 그냥 투사 (필드 선택을) 놓쳤다. – SliverNinja