考虑以下访问记录:
> 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 |
我不知道用什么来获得这个结果。请帮忙。
答案 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
答案 1 :(得分: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;