/ / SQL सर्वर में गतिशील चयन शीर्ष @var - sql, sql-server-2005

डायनामिक SELECT TOP @var SQL सर्वर में - sql, sql-server-2005

SQL सर्वर में लौटने के लिए मैं एक डायनामिक वैरिएबल की पंक्तियों की मात्रा कैसे निर्धारित कर सकता हूं? नीचे SQL Server 2005+ में सिंटैक्स मान्य नहीं है:

DECLARE @count int
SET @count = 20

SELECT TOP @count * FROM SomeTable

उत्तर:

उत्तर। 1 के लिए 453
SELECT TOP (@count) * FROM SomeTable

यह केवल SQL 2005+ के साथ काम करेगा


जवाब के लिए 37 № 2

सिंटैक्स "select top (@var) ..." केवल SQL SERVER 2005+ में काम करता है। SQL 2000 के लिए, आप कर सकते हैं:

set rowcount @top

select * from sometable

set rowcount 0

उम्मीद है की यह मदद करेगा

Oisin।

(रॉन्काउंट के साथ @@ rowcount को बदलने के लिए संपादित - धन्यवाद अगस्त)


जवाब के लिए 11 № 3

X0n के उदाहरण में, यह होना चाहिए:

SET ROWCOUNT @top

SELECT * from sometable

SET ROWCOUNT 0

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


जवाब के लिए 3 № 4

डायनामिक एसक्यूएल का उपयोग करना और इसे निष्पादित कमांड के साथ निष्पादित करना भी संभव है:

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

जवाब के लिए 2 № 5

या आप केवल कोष्ठक में चर डालते हैं

DECLARE @top INT = 10;

SELECT TOP (@Top) *
FROM <table_name>;

उत्तर के लिए 1 № 6
declare @rows int = 10

select top (@rows) *
from Employees
order by 1 desc -- optional to get the last records using the fist column of the table