Sql2000達到Row_number的效果

Sql2000達到Row_number的效果

 小弟寫了一段求出高於平均分數的所有紀錄

 
SELECT  Uid, (SUM(total)) AS sum
FROM     Table
GROUP BY  Uid
HAVING    (SUM(total)) >
(SELECT SUM(total) / COUNT(Uid) AS AVG
FROM  Table)
 
這樣我找出了條件上的所有資料,但是我該怎麼求這個查詢後的筆數?
試了很多方法都不成功.
 
直到朋友告訴我Row_number加上找最大值就可以得到我要的,
彷彿天邊出現了一道曙光.
學習後似乎真的可以得到我要的結果,
這時候才發現Row_Number是Sql2005以後才有(我的DB是2000= =)
我又被打入監牢...............
 
不過由於有Row_number這個方向,google後找到有篇文章指點可以這麼寫來達到row_number的效果
 
select ( select count(*)
from   tb_product p1
where  p1.proid <= p2.proid)  as rowNumber,
* from tb_product p2
order by rowNumber
 
參考資料來源   http://www.cnblogs.com/niunan/archive/2010/05/20/1739815.html
但是怎麼把我寫的語法帶入這一段內得到結果,我還是不會用 = ="(邏輯太差)
 
後來又找到一篇文章
 
--利用臨時表和IDENTITY(函數)
select identity(int,1,1) as [ROW_NUMBER],orderid,qty
into #tem             
from rankorder
 
select orderid,qty,[ROW_NUMBER]
from #tem
 
drop table #tem
 
 
參考資料來源  http://www.wretch.cc/blog/pumamail1020/14829052
才終於解決了我的問題(感謝以上兩位的經驗提供跟google大神)
 
這一段過程還是記錄起來,提供自己以後又碰壁時的一個參考解答.
也請教各位先進,是否有其他更好的方式處理這一段邏輯,又或者我該怎麼去結合以上的語法簡化呢?
 
感謝各位的賜教!!
 
 
程式菜鳥 Blue