2016-09-23 2 views
0

Рассмотрим записи доступа ниже:Доступ к подсчитать количество записей до текущей записи

> Name | Year | 
> Joe | 2011 | 
> Joe | 2012 | 
> Ann | 2012 | 
> Joe | 2013 | 
> Ann | 2013 | 

Я хотел бы, чтобы вычислить текущий счет в год на имя на запись, чтобы получить:

> Name | Year | Prior Year Count | 
> Joe | 2011 | 0    | 
> Joe | 2012 | 1    | 
> Ann | 2012 | 0    | 
> Joe | 2013 | 2    | 
> Ann | 2013 | 1    | 

Я не знаю, что использовать, чтобы получить этот результат. Пожалуйста помоги.

+1

Вы ищете какую-то функциональность номер строки, которая не поддерживает доступ. Но даже если бы это было так, вам нужно каким-то образом указать заказ для вашего результирующего набора. Я имею в виду, что вам нужно использовать 'ORDER BY' вместе с некоторым набором столбцов, чтобы получить результат, который вы нам показали. –

ответ

0

После ответа @Aleksandar Matic, я протекала связать свою таблицу с копией этой таблицы, связанный с customer_id. Затем в предложении where я спросил, что годы подсчета копии должны быть ниже или равны году текущей строки таблицы. Кроме того, я попросил этого года, чтобы быть после 1999

Код:

SELECT my_table.customer_id, my_table.year, Count(my_table_copy.year) AS year_count 
FROM my_table LEFT JOIN my_table AS my_table_copy ON my_table.customer_id = my_table_copy.customer_id 
WHERE (((my_table_copy.year)<=[my_table].[year] And (my_table_copy.year)>"1999")) 
GROUP BY my_table.customer_id, my_table.year; 
+0

Я рад, что у вас это работает. С уважением. –

1

Попробуйте использовать этот SQL запрос, чтобы получить результаты, просто изменить название вашей таблицы и столбцов, при необходимости

select [Name], [Year], (select count(*) 
         from your_table yt_sq 
         where yt_sq.Name = yt.Name and yt_sq.Year < yt.Year) 
from your_table yt 
+0

Хорошо, я понял. Позвольте мне перевести это в SQL for Access и посмотреть, удастся ли мне это сделать. – Benjamin

+0

Итак, это сработало? –

+0

я использовал вид конструкции и SQL-эквивалент: 'SELECT, my_table.customer_id, my_table.year, граф (my_table_copy.year) КАК year_count ОТ my_table LEFT JOIN my_table КАК my_table_copy ПО my_table.customer_id = my_table_copy.customer_id ГДЕ (((my_table_copy.year) <= [my_table]. [year] И (my_table_copy.year)> «1999»)) GROUP BY my_table.customer_id, my_table.year; ' это немного отличается от того, что вы предложили, но поставил меня на правильный путь. – Benjamin

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