|
本帖最后由 moon_2000 于 2013-4-22 16:04 编辑
接触透视表有4年多了,用SQL有两年多。都是用的时候遇到不会的就赶紧查帮助,搜贴子,来论坛。这期间得到很多版主和网友的帮助,自己也学了一些知识。随着会的多,就越来越想用EXCEL,特别是透视表处理日常的一些数据。而在这过程中,我发现很多时候都不用SQL就得用VBA,VBA相对更门外汉,学习SQL多一些,主要是论坛里包括吴版的帖子和ACCESS帮助。但总是用哪儿看哪,不系统,不扎实。这回希望跟着吴版好好学学。
谢谢EH,谢谢吴版!
首先感谢mps777 兄。我想到了表头别名的方法,但不知道怎么写原表头。特别是“部门”是硬回车换行,“员工”还有个#号。全篇的这个都是抄的,不明白为什么这样做。
题1
- select 部_门 as 部门,`员工#` as 员工,`1` as 第1季度金额,`2` as 第2季度金额,`3` as 第3季度金额,`4` as 第4季度金额 from [查询练习$] where 部_门 is not null
复制代码- select 部_门 as 部门,`员工#` as 员工,`1` as 第1季度金额,`2` as 第2季度金额,`3` as 第3季度金额,`4` as 第4季度金额 from [查询练习$] where 部_门
复制代码
我一开始写的是第一行,用 is not null排除第2行那个空行。结果发现mps777的不用也可以,就拿来试试,二者都行。我想,是不是 "where 部_门"是缺省句式,而完整的应该是“where 部_门 is not null”?
题2
- select 部_门 as 部门,`员工#` as 员工,`1` as 第1季度金额,`2` as 第2季度金额,`3` as 第3季度金额,`4` as 第4季度金额 from [查询练习$] where 部_门 ="A"
复制代码 题3
- select 部_门 as 部门,sum(`1`) as 第1季度合计金额 from [查询练习$] where 部_门 group by 部_门
复制代码- select 部_门 as 部门,sum(`1`) as 第1季度合计金额 from [查询练习$] group by 部_门
复制代码 第一条的结果与要求一致。第二条是我一开始做错的,这句不能排除原数据第2行,就是那个空行。因为有sum,所以必要用group by了。我想是不是不用where 也能排除掉空行(尽管吴版PPT说where是前置约束条件,而group是分组条件)。结果发现不成。这句结果如下图
题3不用where限定
这之后,就每题后边乖乖把where给约束上了。
题4
- select 部_门 as 部门,`员工#` as 员工,`1` as 第1季度金额,`2` as 第2季度金额,`3` as 第3季度金额,`4` as 第4季度金额 from [查询练习$] where `3`> 700000
复制代码 题5
- select 部_门 as 部门,max(`4`) as 第4季度最大金额 from [查询练习$] where 部_门 group by 部_门
复制代码 题6没做出来,原因是钻牛角尖了,一直想用sum函数,错误语句如下:
- select 部_门 as 部门,`员工#` as 员工,`1` as 第1季度金额,`2` as 第2季度金额,`3` as 第3季度金额,`4` as 第4季度金额 from [查询练习$] where 部_门 order by sum(`1`,`2`,`3`,`4`) desc
复制代码
此外,还试了sum(1+2+3+4),sum(`1` to `4`)等几个方法,结果都不行。后来看mps777 兄,是如此easy。
|
|