Я дам вам представление о том, как я мог бы подойти к проблеме ... Это не абстрагируемый / многократно используемый функциональный подход - просто практическая, готовая вещь.
0) скопируйте старую таблицу для резервного копирования.
1) присвойте исходной таблице уникальный идентификатор записи.Добавьте столбец в дизайн таблицы под названием «pk», нажмите маленькую кнопку ключа.Убедитесь, что он заполняется автоматически увеличивающимся целым числом после сохранения.
2) создайте новую таблицу со столбцами: pk, id, class1, date1, class2, date2, ..., classn, daten.Вы можете сделать
select id, count(class) from table order by count(class) desc.
для быстрого просмотра того, сколько полей вам нужно создать.
2) сделать вставку # 1
Insert into newtable (pk, id, class1, date1)
select min(pk) id, class, date from oldtable
3) сделатьудалить # 1
Delete from oldtable
where pk in(select pk from newtable)
4) сделать обновление # 1
Update newtable a
set a.pk = b.pk, a.class2 = b.class, a.date2 = b.date
FROM (select min(pk) pk, id, class, date from oldtable) b
5) удалить # 2 (повторить шаг 3)
6) сделать обновление # 2(повторите шаг 4, но измените 2 на 3).Т.е.:
Update newtable a
set a.pk = b.pk, a.class3 = b.class, a.date3 = b.date
FROM (select min(pk) pk, id, class, date from oldtable) b
... и так далее до тех пор, пока в вашей старой таблице больше не останется записей.
Как я уже сказал - это не может быть использовано повторно, у вас естьизменять его в каждом цикле и т. д. Если вы знаете, как использовать наборы записей ADO и т. д., вы можете преобразовать это в нечто более абстрактное / многократно используемое, но не похоже, что вы собираетесь использовать его больше, чемоднажды.
удачи.