SQL सर्वर में लौटने के लिए मैं एक डायनामिक वैरिएबल की पंक्तियों की मात्रा कैसे निर्धारित कर सकता हूं? नीचे SQL Server 2005+ में सिंटैक्स मान्य नहीं है:
DECLARE @count int
SET @count = 20
SELECT TOP @count * FROM SomeTable
उत्तर:
उत्तर। 1 के लिए 453SELECT 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