2016-09-23 77 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

您正在寻找某种行号功能,该功能Access不支持。但即使这样做,您也需要通过某种方式为结果集指定一个订单。我的意思是你需要能够使用ORDER BY和一些列来获得你给我们的输出。 –

回答

0

继@Aleksandar马蒂奇的回答我继续我的表,该表的副本链接只是改变你的表和列的名字,由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中的Access for Access,看看我是否成功。 – Benjamin

+0

那么,它工作? –

+0

我使用了设计视图,SQL的等价物是:'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] [年]和(my_table_copy.year)。> “1999”)) GROUP BY my_table.customer_id,my_table.year; ' 这与你的建议有点不同,但让我走上正轨。 – Benjamin

相关问题