You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Access 2016中通过查询实现表的Transpose/Pivot操作

在Access 2016中实现数据透视(转置):将Customer-Quantity-Month表转换为月度列格式

没问题!在Access里处理这种行列转换,**交叉表查询(Crosstab Query)**是最顺手的方案,完全契合你习惯用查询的需求。下面给你两种实现方式,图形化操作和直接写SQL,你挑顺手的来:

方法一:通过查询向导可视化创建交叉表

如果你喜欢点点鼠标操作,跟着这几步走就行:

  1. 打开你的Access数据库,切换到创建选项卡,点击查询向导
  2. 在弹出的窗口里选择交叉表查询向导,点击「确定」
  3. 选中你要处理的源表,点击「下一步」
  4. 在「行标题」区域选择CustomerNo(这就是最终结果里每行对应的客户编号),点击「下一步」
  5. 在「列标题」区域选择Month(这就是要转成横向列的月份字段),点击「下一步」
  6. 在「值」区域选择Quantity,然后在「函数」下拉框里选Sum(因为每个客户每个月只有一条数据,用Sum/First/Last结果都一样,Sum是最通用的选择),别勾选“包括各行小计”,点击「下一步」
  7. 给这个查询起个好记的名字(比如CustomerMonthlyPivot),选择「查看查询」,点击「完成」
  8. 最后过滤客户:如果只想看11和12号客户,右键查询选择「设计视图」,在CustomerNo字段的「条件」行输入In (11,12),运行查询就搞定了!

方法二:直接编写SQL语句(高效党首选)

如果你习惯直接写查询语句,用下面这段SQL就行,记得把你的表名替换成实际的表名称:

TRANSFORM Sum(Quantity) AS SumOfQuantity
SELECT CustomerNo AS [Customer No.]
FROM 你的表名
WHERE CustomerNo In (11,12)
GROUP BY CustomerNo
PIVOT Month;

简单解释下这段SQL:

  • TRANSFORM是Access专属的交叉表关键字,指定要聚合的字段(Quantity)和聚合函数(Sum)
  • SELECT定义结果的行标题,这里把CustomerNo重命名为Customer No.,和你要的预期格式完全匹配
  • WHERE子句过滤出仅11和12号客户的记录
  • GROUP BY按客户编号分组,确保每个客户占一行
  • PIVOT把Month字段的每个不同值转成一列,完美实现转置效果

运行这段查询后,你会得到和预期完全一致的结果:

Customer No.Jan 18Feb 18Mar 18
11222018
1210815

小提醒:如果你的Month字段是日期类型而非文本,记得用Format(Month, "mmm yy")来格式化成年月文本,这样列标题才会和示例一致~

内容的提问来源于stack exchange,提问作者SaravananOS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:59:10