Добавить поле к вашему столу. Выберите AutoNumber в качестве своего типа данных и сделайте его основным ключом таблицы. Я назвал поле ID, так что моя версия ваших данных образца выглядит следующим образом ...
ID COL1
1 A
2 B
3 A
4 C
5 A
SELECT
заявление ниже возвращает этот результирующий набор ...
ID COL1 COL2a COL2b
1 A 1 1
2 B 1 1
3 A 2 2
4 C 1 1
5 A 3 3
COL2a и COL2b показать 2 метода для достижения того же результата. DCount - это специфичные для доступа и требуемые котировки вокруг значений текста m.COL1
. Второй подход, COL2b, использует коррелированный подзапрос, поэтому он может работать в другой базе данных, если вы выберете. И с этим подходом вам не нужно будет беспокоиться о цитировании текстовых значений.
Любой подход требует, чтобы двигатель db запускал дополнительный запрос для каждой строки результирующего набора. Таким образом, с огромным столом производительность будет представлять собой проблему. Индексирование поможет там. Добавьте индекс на COL1
, если его уже нет. ID
уже имеет индекс, так как это первичный ключ.
Если вы не можете добавить поле, и в таблице еще нет другого подходящего поля, то я думаю, вам не повезло. Вы не сможете получить то, что хотите, с помощью запроса Access.
SELECT
m.ID,
m.COL1,
DCount(
"*",
"MyTable",
"COL1 = '" & m.COL1 & "' AND ID <= " & m.ID
) AS COL2a,
(
SELECT Count(*)
FROM MyTable AS m2
WHERE m2.COL1 = m.COL1 AND m2.ID <= m.ID
) AS COL2b
FROM MyTable2 AS m
ORDER BY m.ID;
В вашей таблице есть столбец идентификатора? Таблицы SQL по своей сути неупорядочены, поэтому вам нужен другой столбец для указания порядка. –
Он легко может иметь идентификатор, который я удалил из примера для простоты - так, если у него есть id col любые идеи? – megaSteve4