2013-03-25 2 views
1

У меня есть таблица рейтинга, содержащие оценки на разных рангов:MS Access: использовать 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 

До обновления:

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" 

После обновления:

'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 

Я попытался сделать запрос, который использует UPDATE, а также DENSE_RANK, но я не мог понять, как заставить его работать ,

+0

JET не поддерживает 'DENSE_RANK'. Вы можете использовать прокси-запрос ODBC, если ваша база данных базы данных - это SQL Server, и там используется Transact-SQL, но в противном случае вы должны эмулировать 'DENSE_RANK'. –

ответ

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 является совмещенным.

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