我有一个访问数据库,其id指的是拥有不同尺寸卡车的客户。目前该表看起来像这样:
id.....tire size
1......30
1......30
1......31
1......31
2......32
我想要实现的是这样的:
id.....30.....31.....32
1......2......2......0
2......0......0......0
它计算特定轮胎尺寸的出现次数并将其输入相应的轮胎尺寸栏。
答案 0 :(得分:2)
为了在编写数据时显示数据,您需要执行交叉表查询。下面的代码应该达到你想要的效果
TRANSFORM Nz(Count([YourTable].[Tire Size]),0) AS [CountOfTire Size]
SELECT [YourTable].[ID]
FROM [YourTable]
GROUP BY [YourTable].[ID]
PIVOT [YourTable].[Tire Size];
答案 1 :(得分:0)
第一步是查询:
select tire_size, COUNT(id) from mytable
GROUP BY tire_size
(我将该查询的“特殊魔术”部分放在大写中以强调。)
在MS-Access查询构建器中,通过单击看起来模糊地像“E”(实际上是希腊语“epsilon”字符)的按钮来访问分组功能,如果我没记错的话。这会向查询构建器网格添加一个新的“分组”行。
这将产生(正如您将很快看到的)轮胎尺寸的逐行结果以及轮胎尺寸的id计数。
其他许多变体都是可能的。阅读讨论此功能的MS-Access在线帮助:他们做得非常好。
基本思想是GROUP BY
条款:这表示tire_size
的每个不同值构成一个“组”。 (是的,您可以GROUP BY
多个列,其中每个唯一值组合形成一个组。)然后,您指定所谓的“域聚合函数,,例如{{ 1}},为每个组生成摘要统计信息。
每个COUNT(), AVG(), SUM()
列都必须出现在GROUP BY
子句中,中出现的每个其他项都必须是域聚合函数。 (如果您考虑它,那就非常有意义......)
(幸运的是,MS-Access的查询构建器可以很好地“隐藏”所有这些。您可以通过“epsilon”按钮以交互方式构建分组查询。但是查看“SQL视图”会很有用“看看它在SQL术语中做了什么。”
答案 2 :(得分:0)
使用' GROUP BY'聚合
你需要这样的东西:
SELECT
tyre_size,
count(id)
FROM tablename
GROUP BY
tire_size