Обновление SQL каждой записи с ее позицией в упорядоченном выборе - PullRequest
1 голос
/ 24 февраля 2010

Я использую Access через OleDb. У меня есть таблица с идентификаторами столбцов, GroupID, время и место. Приложение вставляет новые записи в таблицу, к сожалению, Место не рассчитано правильно.

Я хочу обновить каждую запись в группе, указав правильное место в соответствии с возрастанием времени.

Итак, предположим, что следующие данные:

ID     GroupId  Time   Place
Chuck  1        10:01  2
Alice  1        09:01  3
Bob    1        09:31  1

должно привести к:

ID     GroupId  Time   Place
Chuck  1        10:01  3
Alice  1        09:01  1
Bob    1        09:31  2

Я мог бы предложить решение с использованием курсора, но это AFAIK невозможно в Access.

Ответы [ 2 ]

2 голосов
/ 24 февраля 2010

Я только что выполнил поиск по «ранжированию в Access» и получил этот результат support.microsoft .

Похоже, вы создаете запрос с полем, которое имеет следующее выражение:

Place: (Select Count(*) from table1 Where [Time] < [table1alias].[Time]) + 1

Я не могу это проверить, поэтому надеюсь, что это сработает. Используя это вы можете сделать (где queryAbove - вышеупомянутый запрос):

UPDATE table1
SET [Place] = queryAbove.[Place]
FROM queryAbove
WHERE table1.ID = queryAbove.ID

Это длинный выстрел, но, пожалуйста, попробуйте.

0 голосов
/ 24 февраля 2010

Я не думаю, что время - это число или столбец, отформатированный по времени, время, к сожалению, является текстовой строкой, содержащей числа и разделители времени Вот почему сортировка после столбца времени недопустима. Удаление разделителей ":" и "," приведение к целому числу, а затем сортировка по нумерации может сделать работу

...