如何使用“计数”和年龄范围在Access上创建表格?

时间:2019-02-21 22:55:15

标签: ms-access

我从该网站下载了第一个舰队所有人员的记录。 http://firstfleet.uow.edu.au/download.html 我下载了Excel并将其导入到Access中。在文档中,某些人的年龄未知,因此将其简单地设为-1。

我正在尝试制作这张桌子,但我在挣扎。
enter image description here

我尝试通过创建表来做到这一点,但这太难了,所以我决定创建一个查询。我正在使用“ Crosstab”,但未能成功使用它。

当我尝试将-1代入未知数时:

enter image description here

这样的消息弹出:

enter image description here

我们如何在表格中添加表格,但在-1中添加未知表格,同时保持布局不变?我很难被困在一个甚至无法查看查询外观的地方。

如何使布局与上图相同?

更新:

enter image description here enter image description here

1 个答案:

答案 0 :(得分:2)

使用Switch()函数计算年龄组,并将计算出的字段用于CROSSTAB RowColumn。我从原始导入名称重命名了表中的“年龄”字段,以缩短表达式。

TRANSFORM Count(Convicts.ID) AS CountOfID
SELECT Switch([Age]=-1,"Unknown",[Age]<15,"10-14",[Age]<20,"15-19",[Age]<25,"20-24",[Age]<30,"25-29",[Age]<35,"30-34",[Age]<40,"35-39",[Age]<45,"40-44",[Age]<50,"45-49",[Age]<60,"50-59",[Age]<100,"60-99") AS AgeGrp
FROM Convicts
GROUP BY Switch([Age]=-1,"Unknown",[Age]<15,"10-14",[Age]<20,"15-19",[Age]<25,"20-24",[Age]<30,"25-29",[Age]<35,"30-34",[Age]<40,"35-39",[Age]<45,"40-44",[Age]<50,"45-49",[Age]<60,"50-59",[Age]<100,"60-99")
PIVOT Convicts.Gender;

enter image description here
当查询在数据表视图中时,通过单击功能区上的Sigma(总计)图标来添加总行。

更简单的计算将生成更多的组:

TRANSFORM Count(Convicts.ID) AS CountOfID
SELECT Partition([Age],0,100,5) AS AgeGrp
FROM Convicts
GROUP BY Partition([Age],0,100,5)
PIVOT Convicts.Gender;

但是对SELECT子句进行一些调整将获得与第一个相同的输出:
SELECT IIf([Age]=-1,"Unknown",IIf([Age]<50,Partition([Age],0,50,5),IIf([Age]<60,"50:59","60:99"))) AS AgeGrp

可以在表中添加一个字段,并在UPDATE操作SQL中使用这些表达式之一来添加计算出的AgeGrp,这将简化CROSSTAB和其他需要该组标识符的查询。