TRANSFORM PIVOT工作原理及查询结果合并为单行的实现方法
问题分析与修改方案
一、TRANSFORM PIVOT 运行逻辑说明
这是Access数据库特有的交叉表查询语法,执行逻辑如下:
- 先执行FROM和WHERE筛选条件,得到符合要求的源数据
- 按GROUP BY指定的字段做分组,每个分组对应结果表中的一行
- PIVOT后指定的字段值会被展开为结果表的列标题
- TRANSFORM后指定的聚合函数,会计算「每个分组 + 每个PIVOT列」对应的值,填充到交叉单元格中
二、原查询多行输出的原因
你原语句中GROUP BY Name,也就是每个不同的Name会生成独立的行,同时PIVOT Name又把每个Name作为列标题,所以最终每个行只有当前分组Name对应的列有值,其余列为空,就出现了你看到的对角线有值的结果。
三、修改后的查询语句
TRANSFORM MAX(NbTest) SELECT 'Result =' AS Expr1002 FROM TableTest WHERE Date=#25/10/2021# GROUP BY 'Result =' PIVOT Name
四、修改点说明
- TRANSFORM后增加
MAX聚合函数:因为要把多个Name的NbTest值合并到同一行,每个Name对应的值唯一,用MAX/SUM/AVG都可以实现正确取值 - SELECT子句改为固定字符串
'Result ='并别名指定为Expr1002:对应你要的第一列展示效果 - GROUP BY改为固定字符串:不再按Name分组,所有符合条件的数据会被聚合为单行输出
内容的提问来源于stack exchange,提问作者TourEiffel
相关产品推荐
相关产品推荐

