2013-03-25 69 views
1

我有一個排名表,對不同級別的含得分:MS訪問:使用DENSE_RANK在更新

(R) Rankname: string, name of the rank 
(ID) PlayerID: foreign key(int) 
(S) Score:  integer, higher score means higher endrank 
(P) Position: integer, representing the location in the rank 

在此之前更新:

'a' 0 5 3 
'a' 1 10 2 
'a' 2 15 1 
'b' 0 5 3 
'b' 1 10 2 
'b' 2 10 2 
'b' 3 15 1 

更新
R ID S P 
'a' 0 5 "undefined" 
'a' 1 10 "undefined" 
'a' 2 15 "undefined" 
'b' 0 5 "undefined" 
'b' 1 10 "undefined" 
'b' 2 10 "undefined" 
'b' 3 15 "undefined" 

後我試圖做一個查詢,使用UPDATE以及DENSE_RANK,但我無法弄清楚如何使它工作。

+0

JET不支持'DENSE_RANK'。如果後端數據庫是SQL Server,則可以使用ODBC直通查詢,並在其中使用Transact-SQL,但否則您必須模擬DENSE_RANK。 – 2013-03-25 11:40:14

回答

3

這取決於創建一個查詢來計算不同的記錄,在這個例子中,這個查詢被稱爲qry。要更新您的表,你就可以說:

UPDATE MyTable 
SET MyTable.P = 
    DCount("*","qry","s<=" & [MyTable].[s] & " and r=""" & [MyTable].[r] & """"); 

還有一個點要注意,這是QRY:

SELECT DISTINCT z.r, z.s 
FROM MyTable AS z; 

的MyTable的別名。