ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 7329|回复: 12

[求助] 交叉表查询能否解决列小计和行小计?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2010-5-28 08:17 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

需求表

需求表

以上报表用透视表很容易在excel中做出,但在access中呢?如何查询解决?
一开始联想到用交叉表,只能得到如下结果。

交叉表

交叉表

行小计和类小计无法解决。
请问Access中真的无法处理么?
还有没有其他的解决方法?

桌面.rar

16.77 KB, 下载次数: 56

文件

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-5-28 08:46 | 显示全部楼层
http://access911.net/fixhtm/72FAB31E16DCE8F3.htm?tt=如何在表中同时显示明细、小计、总计?《查询》
根据以上方法,只做出一下内容
3.JPG

select  Cdata_交叉表.部门类型,Cdata_交叉表.总计金额  as 合计 from Cdata_交叉表
union all
SELECT Cdata_交叉表.部门类型 & " 小计" AS 表达式1, Sum(Cdata_交叉表.总计金额) AS 合计
FROM Cdata_交叉表
GROUP BY Cdata_交叉表.部门类型 & " 小计";
UNION ALL
select  "总计", Sum(Cdata_交叉表.总计金额) AS 合计 from Cdata_交叉表;

TA的精华主题

TA的得分主题

发表于 2010-5-28 09:17 | 显示全部楼层
此前本人最多只能做到第一个表中,除了最右下角的那个单元格没有数据,其余都能做出来,有点复杂。暂时没时间:)

[ 本帖最后由 whsfhwm 于 2010-5-28 22:49 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-5-28 17:02 | 显示全部楼层
原帖由 whsfhwm 于 2010-5-28 09:17 发表
做多只能做到第一个表中,除了最右下角的那个单元格没有数据,其余都能做出来,有点复杂。暂时没时间:)


能否指点一下~

TA的精华主题

TA的得分主题

发表于 2010-5-28 22:30 | 显示全部楼层
Cdata.rar (8.58 KB, 下载次数: 63)
本题对我来说还是很有难度的 :)
水平有限,纠结了一个晚上,终于差不多了,虽然有一点小瑕疵(总计在最上面一行了)
SQL语句超复杂:不知道有没有高手看看简化一下。
  1. Transform sum(合计) select 部门类型,科室 from(
  2.   select 部门类型,科室,物资类型,sum(合计)as 合计 from
  3.     (  select  部门类型,供应商部门名称 as 科室,物资类型,sum(金额)  as 合计 from [Cdata$]  group by 部门类型,供应商部门名称 ,物资类型 union all   
  4.      select  部门类型,供应商部门名称,物资类别 & '小计',sum(金额) from [Cdata$] group by 部门类型,供应商部门名称,物资类别 union all   
  5.      select  部门类型,供应商部门名称,'总计',sum(金额) from [Cdata$] group by 部门类型,供应商部门名称 union all
  6.      select  部门类型&'小计','',物资类型,sum(金额) from [Cdata$] group by 部门类型,物资类型 union all   
  7.      select  部门类型&'小计','',物资类别& '小计',sum(金额) from [Cdata$] group by 部门类型,物资类别 union all
  8.      select  部门类型&'小计','','总计',sum(金额) from [Cdata$] group by 部门类型  union all   
  9.      select  '总计',null,物资类型,sum(金额) from [Cdata$] group by 部门类型,物资类型 union all
  10.      select  '总计',null,物资类别 & '小计',sum(金额) from [Cdata$] group by 部门类型,物资类别 union all
  11.      select  '总计',null,'总计',sum(金额) from [Cdata$]      
  12.     ) group by 部门类型,科室,物资类型
  13. )  group by 部门类型,科室 order by 部门类型,科室  pivot 物资类型
复制代码

[ 本帖最后由 whsfhwm 于 2010-5-28 22:48 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-5-29 17:59 | 显示全部楼层
首先谢谢楼上的回答。
测试了下有如下问题,。
我的本意是想在access中作查询,上传个excel是为了展示要得到的结果。楼上的可能误会了!
我把代码放到了access查询器中结果不对,有问题,请各位分析下。怎么解决!

提示合计循环引用!

[ 本帖最后由 zhua 于 2010-5-29 18:05 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-5-29 20:30 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
原帖由 zhua 于 2010-5-29 17:59 发表
首先谢谢楼上的回答。
测试了下有如下问题,。
我的本意是想在access中作查询,上传个excel是为了展示要得到的结果。楼上的可能误会了!
我把代码放到了access查询器中结果不对,有问题,请各位分析下。怎么解决! ...

EXCEL与ACCESS中的SQL基本通用,细节处略作修改即可。
经测试,下面的语句在ACCESS中运行无误,最后把查询结果的列字段手工移动到期望的结果即可。
  1. Transform sum(合计) select Cdata.部门类型,科室 from(
  2.   select Cdata.部门类型,科室,Cdata.物资类型,sum(合计1)as 合计 from
  3.     (  select  Cdata.部门类型,Cdata.供应商部门名称 as 科室,Cdata.物资类型,sum(Cdata.金额)  as 合计1 from  Cdata   group by Cdata.部门类型,Cdata.供应商部门名称 ,Cdata.物资类型 union all   
  4.      select  Cdata.部门类型,Cdata.供应商部门名称,Cdata.物资类别 & '小计',sum(Cdata.金额) from  Cdata  group by Cdata.部门类型,Cdata.供应商部门名称,Cdata.物资类别 union all   
  5.      select  Cdata.部门类型,Cdata.供应商部门名称,'总计',sum(Cdata.金额) from  Cdata  group by Cdata.部门类型,Cdata.供应商部门名称 union all
  6.      select  Cdata.部门类型&'小计','',Cdata.物资类型,sum(Cdata.金额) from  Cdata  group by Cdata.部门类型,Cdata.物资类型 union all   
  7.      select  Cdata.部门类型&'小计','',Cdata.物资类别& '小计',sum(Cdata.金额) from  Cdata  group by Cdata.部门类型,Cdata.物资类别 union all
  8.      select  Cdata.部门类型&'小计','','总计',sum(Cdata.金额) from  Cdata  group by Cdata.部门类型  union all   
  9.      select  '总计',null,Cdata.物资类型,sum(Cdata.金额) from  Cdata  group by Cdata.部门类型,Cdata.物资类型 union all
  10.      select  '总计',null,Cdata.物资类别 & '小计',sum(Cdata.金额) from  Cdata  group by Cdata.部门类型,Cdata.物资类别 union all
  11.      select  '总计',null,'总计',sum(Cdata.金额) from  Cdata        
  12.     ) group by Cdata.部门类型,科室,Cdata.物资类型
  13. )  group by Cdata.部门类型,科室 order by Cdata.部门类型,科室  pivot Cdata.物资类型
复制代码
这里把我测试无误的结果也附上来,不过本人对ACCESS之前没有接触,所以不知道为什么运行之后查询表里再调出来的SQL语句就不是上面的摸样了。
Cdata.rar (11.28 KB, 下载次数: 101)

TA的精华主题

TA的得分主题

发表于 2010-5-30 09:35 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
列顺序手工调整,之后再刷新也不会发生变化。

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-5-30 09:13 | 显示全部楼层
[%$##@_Alias]

代码中出现了以上的字符,
顺序也发生了变化!部门类型和科室列都调到右边去了!
  1. TRANSFORM Sum([%$##@_Alias].合计) AS 合计之总计
  2. SELECT Cdata.部门类型 AS 表达式1, [%$##@_Alias].科室
  3. FROM [select Cdata.部门类型,科室,Cdata.物资类型,sum(合计1)as 合计 from
  4.     (  select  Cdata.部门类型,Cdata.供应商部门名称 as 科室,Cdata.物资类型,sum(Cdata.金额)  as 合计1 from  Cdata   group by Cdata.部门类型,Cdata.供应商部门名称 ,Cdata.物资类型 union all   
  5.      select  Cdata.部门类型,Cdata.供应商部门名称,Cdata.物资类别 & '小计',sum(Cdata.金额) from  Cdata  group by Cdata.部门类型,Cdata.供应商部门名称,Cdata.物资类别 union all   
  6.      select  Cdata.部门类型,Cdata.供应商部门名称,'总计',sum(Cdata.金额) from  Cdata  group by Cdata.部门类型,Cdata.供应商部门名称 union all
  7.      select  Cdata.部门类型&'小计','',Cdata.物资类型,sum(Cdata.金额) from  Cdata  group by Cdata.部门类型,Cdata.物资类型 union all   
  8.      select  Cdata.部门类型&'小计','',Cdata.物资类别& '小计',sum(Cdata.金额) from  Cdata  group by Cdata.部门类型,Cdata.物资类别 union all
  9.      select  Cdata.部门类型&'小计','','总计',sum(Cdata.金额) from  Cdata  group by Cdata.部门类型  union all   
  10.      select  '总计',null,Cdata.物资类型,sum(Cdata.金额) from  Cdata  group by Cdata.部门类型,Cdata.物资类型 union all
  11.      select  '总计',null,Cdata.物资类别 & '小计',sum(Cdata.金额) from  Cdata  group by Cdata.部门类型,Cdata.物资类别 union all
  12.      select  '总计',null,'总计',sum(Cdata.金额) from  Cdata        
  13.     ) group by Cdata.部门类型,科室,Cdata.物资类型
  14. ]. AS [%$##@_Alias]
  15. GROUP BY Cdata.部门类型, [%$##@_Alias].科室
  16. ORDER BY Cdata.部门类型, [%$##@_Alias].科室
  17. PIVOT Cdata.物资类型;
复制代码
代码也发生了变化!

[ 本帖最后由 zhua 于 2010-5-30 09:17 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-5-30 12:58 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-30 18:48 , Processed in 0.044335 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表