2010-06-17 3 views
1

прямо сейчас я использую ROW_NUMBER() в моей процедуры в SQL Server 2008 следующим образом:ROW_NUMBER альтернатива для SQL Server 2000

WITH cars as(SELECT carid,mileage,retailprice,imageurl,model,year, 
      Zips.Distance AS Miles, Manufacturers.mfgName as Make, 
      dealers.companyname as companyname, CASE @sortby 
WHEN 'D' THEN ROW_NUMBER() OVER (ORDER BY Manufacturers.mfgName) 
WHEN 'P' THEN ROW_NUMBER() OVER (ORDER BY retailprice) 
WHEN 'M' THEN ROW_NUMBER() OVER (ORDER BY mileage) 
END as 'rownum' 
FROM usedcars INNER JOIN #TempZips Zips ON Zips.ZipCode =usedcars.loczip 
left join Manufacturers on Manufacturers.mfgid=usedcars.mfgid 
left join dealers on dealers.dealerid = usedcars.dealerid 
where usedcars.active=1 and [email protected]) 
select @totalrecords as totalrec,* from cars 
where rownum between @skip and @take 

Есть ли эквивалент этому, что работает в SQL2000? (ROW_NUMBER не был введен до SQL2005).

+0

Почему вы разработали его в SQL Server 2008? Это так неудобно в SQL Server 2000. – gbn

+1

Если SQL 2000 будет минимальным поддерживаемым db, тогда вся разработка должна была произойти в SQL 2000, чтобы предотвратить эту ситуацию, когда функция в более позднем продукте «случайно» используется. Мое предложение было бы рекомендовать, чтобы клиент обновил до SQL 2005 или более поздней версии в качестве усилия по дооснащению решения для работы в SQL 2000, будет больше, чем стоимость обновления. – Thomas

+0

Я полностью понимаю. Это то, что наш клиент купил, и они не хотят обновляться до SQL Server 2008 или 2005. – iosdevnyc

ответ

4

Вы можете создать временную таблицу с столбцом идентификации и вставить в нее свои данные.

Затем используйте временную таблицу.

+1

См. MS KB http://support.microsoft.com/kb/186133/en-us для некоторых примеров этого. – BradC

+0

3 временных таблицы, потому что у вас может быть только одна IDENTITY для таблицы ... – gbn

Смежные вопросы