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大神)
這一段過程還是記錄起來,提供自己以後又碰壁時的一個參考解答.
也請教各位先進,是否有其他更好的方式處理這一段邏輯,又或者我該怎麼去結合以上的語法簡化呢?
感謝各位的賜教!!