2010-06-17 105 views
1

現在,我在我的程序在SQL Server 2008中使用ROW_NUMBER()如下: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的作品? (直到SQL2005才引入ROW_NUMBER)。

+0

你爲什麼在SQL Server 2008中開發它?這在SQL Server 2000中非常尷尬。 – gbn 2010-06-17 19:13:40

+1

如果SQL 2000將成爲支持的最小數據庫,那麼所有的開發工作都應該在SQL 2000中進行,以防止出現這種情況,即「意外」使用了後續產品中的功能。我的建議是建議客戶升級到SQL 2005或更高版本,因爲改進解決方案在SQL 2000中工作的工作量將超過升級成本。 – Thomas 2010-06-17 19:43:09

+0

我完全理解。這是我們的客戶購買的東西,他們不想升級到SQL Server 2008或2005 – iosdevnyc 2010-06-17 20:43:24

回答

4

您可以使用標識列創建臨時表,並將數據插入到該表中。

然後使用臨時表。

+1

有關此的一些示例,請參閱MS KB http://support.microsoft.com/kb/186133/en-us。 – BradC 2010-06-17 19:16:21

+0

3個臨時表,因爲每個表只能有一個IDENTITY ... – gbn 2010-06-17 19:20:39