excel中的sql中交叉表查询中的累计

excel中的sql中交叉表查询中的累计

ID:18692456

大小:186.50 KB

页数:6页

时间:2018-09-20

excel中的sql中交叉表查询中的累计_第1页
excel中的sql中交叉表查询中的累计_第2页
excel中的sql中交叉表查询中的累计_第3页
excel中的sql中交叉表查询中的累计_第4页
excel中的sql中交叉表查询中的累计_第5页
资源描述:

《excel中的sql中交叉表查询中的累计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、本文来自ACMAIN_CHM的作品改编.交叉表查询无疑有使用中可以很方便的进行数据的分析处理。你可以通过向导来生成(在向导中你可以选择是否生成行合计)或者直接按照这个Excel(ACCESS也适用)特有JET-SQL语法来写这个SQL语句。TRANSFORM合计函数  selectstatement  TRANSFORMaggfunctionselectstatementPIVOTpivotfield[IN(value1[,value2[,...]])]比如现有表table3,数据如下下载(23.2KB)2010-3-2413:09可以用向导得到一个

2、每人的成绩表如下下载(16.33KB)2010-3-2413:09它对应的SQL语句如下:1.TRANSFORMSum(Table3.Score)ASScoreOfSum1.SELECTTable3.sName,Table3.sClass,Sum(Table3.Score)AS[TotalOfScore]2.FROMTable33.GROUPBYTable3.sName,Table3.sClass4.PIVOTTable3.Course;复制公式或代码关于这个SQL语句的说明,你可以自已查阅一下ACCESS自带的帮助手册中的详细说明,Excel里面的

3、SQL也是参考Access的写法。如果你想控制科目的显示顺序,可以试一下这个语法的作用。PIVOTpivotfield[IN(value1[,value2[,...]])]以上是交叉表查询的常见用法。美中不足,这个由向导生成的查询虽然有了行合计,但没有列合计。由于TRANSFORM自身功能的限制无法直接生成列合计运算(我们这里所说的合计运算包括平均/最大/最小等,以下均不再说明)。但我们可以通过UNION联合来实现。思路:直接在table3的数据中追加上合计行然后再进行交叉。比如如果table3的数据能形成如下记录下载(24.12KB)2010-3-

4、2413:09这样我们就可以利用TRANSFORM来实现了。1.生成合计,你可以通过向导或自己生成这个合计的查询1.selectcourse,avg(score)2.fromtable33.groupbycourse复制公式或代码下载(9.77KB)2010-3-2413:092.利用UNION生成交叉表查询的数据源。(这里我们用了UNIONALL,关于UNION的语法说明请自行查阅帮助,同样我们利用'Total'assName,nullassClass生成了两个常数列以保证UNION的两个集合的列数相匹配。)1.selectsName,sClass

5、,Course,Score2.fromTable33.unionall4.select'Total'assName,nullassClass,course,avg(score)5.fromtable36.groupbycourse复制公式或代码下载(14.99KB)2010-3-2413:093.把这个查询代入到一开的那个交叉查询中,替代原来的table3.把把所有的table3.换成t.如下1.1.TRANSFORMSum(t.Score)ASScoreOfSum2.SELECTt.sName,t.sClass,Sum(t.Score)AS[Tot

6、alOfScore]3.FROMTable34.GROUPBYt.sName,t.sClass5.PIVOTt.Course;复制公式或代码然后再把fromtable3变成1.TRANSFORMSum(t.Score)ASScoreOfSum2.SELECTt.sName,t.sClass,Sum(t.Score)AS[TotalOfScore]3.FROM(selectsName,sClass,Course,Score4.  fromTable35.  unionall6.  select'Total'assName,nullassClass,co

7、urse,avg(score)7.  fromtable38.  groupbycourse)t9.GROUPBYt.sName,t.sClass10.PIVOTt.Course;复制公式或代码结果如下下载(17.72KB)2010-3-2413:09如果我们想再加上每个班的小计那么就再union上每个班的合计平均值1.select'subtotal'assName,sClass,course,avg(score)2.fromtable33.groupbycourse,sClass复制公式或代码这样改为1.TRANSFORMSum(t.Score)A

8、SScoreOfSum2.SELECTt.sName,t.sClass,Sum(t.Score)AS[Tot

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。