2009-11-16 14 views

cevap

6

Hep bir kimlik sütunu

DECLARE @table TABLE(
     [id] INT IDENTITY(1,1), 
     Val VARCHAR(10) 
) 

DECLARE @TableFrom TABLE(
     Val VARCHAR(10) 
) 
INSERT INTO @TableFrom (Val) SELECT 'A' 
INSERT INTO @TableFrom (Val) SELECT 'B' 
INSERT INTO @TableFrom (Val) SELECT 'C' 
INSERT INTO @TableFrom (Val) SELECT 'D' 

INSERT INTO @table (Val) SELECT * FROM @TableFrom ORDER BY Val DESC 
SELECT * FROM @table 

i SQL Server 2000'de gördüğüm en iyi çağrı bazıları geçici bir tablo kullanmayı deneyebilirsiniz

DECLARE @PageStart INT, 
     @PageEnd INT 

SELECT @PageStart = 51, 
     @PageEnd = 100 

SELECT <TABLE>.* 
FROM (
      SELECT TOP (@PageStart - 1) 
        <ID> 
      FROM (
         SELECT TOP (@PageEnd) 
           <ID> 
         FROM TABLE 
         ORDER BY <ID> ASC 
        ) SUB 
      ORDER BY SUB.<ID> DESC 
     ) SUB INNER JOIN 
     <TABLE> ON SUB.<ID> = <TABLE>.<ID> 
ORDER BY SUB.<ID> 
+0

dışında, bu geçici bir tablo ama bir tablo değişkeni değildir ve onlar http ya – Andomar

+0

bu göz at 200 destek değildir : //support.microsoft.com/kb/305977 –

+0

+1 güzel. İşte benim son notum o zaman! – Andomar

0

nasıl açar mısınız bu desenini kullanır Sorunun altından sorunu çözecek?

SEC (SUM SELECT (1) specimen_source_ref DAN

WHERE specimen_source_rcd < = reg.specimen_source_rcd

) 'Sıra Numarası'

, * olarak DAN

specimen_source_ref reg

+0

Bu, listedeki geçerli öğeye göre daha küçük veya eşit öğelerin sayısını verir, ancak duplcate öğeleri varsa size benzersiz bir row_number vermez –

3

kullanmak için bir kimlikle geçici bir tablo oluşturmak için başka bir yol:

SELECT Field1, Field2, IDENTITY(int, 1,1) AS MyID 
INTO #Temp 
FROM Table1 
İlgili konular