在MS Access 2010中,我有一个两列表(出版物),其中包括作者的姓名和发表文章的年份。
author year
Davis A 1973
Boyd B 1973
Davis A 1974
Pit L 1974
...我想找到在两、三年或N年内发表文章的作者的数量(例如,那些在1973和1974中同时发表的作者,比如Davis A)。我知道这可以用SQL intersect来完成(如下所示)
SELECT publications.author, publications.year
FROM publications
WHERE publications.year=1973
INTERSECT
SELECT publications.author, Author_year_unique_year.year
FROM publications
WHERE publications.year=1974;但是Access没有互联网络,解决方案显然是连接,但我只有一个表。或者不是数字,如果我能得到那些作者的名单,在N个给定的年份,这也是很好的。谢谢你的帮助。
发布于 2014-07-11 11:29:59
最简单的方法是使用子查询:
select years, count(*), min(author), max(author)
from (select author, count(*) as years
from (select distinct author, year
from publications
) as p
group by author
) as t
group by years
order by years;如果需要两年时间,还可以在having子句中使用聚合:
select author
from publications
group by author
having sum(iif(year = 1973, 1, 0)) > 0 and
sum(iif(year = 1974, 1, 0)) > 0having子句中的每个条件都会计算给定年份作者的出版物数量。> 0发现作者中至少有一个。这种结构非常灵活,您可以很容易地添加更多年份或排除特定年份(使用= 0而不是> = 0)。
https://stackoverflow.com/questions/24696574
复制相似问题