如果有多个表,存在相同列,想把这些数据汇总到一个表里面进行各种统计怎么办? excel里面有个插件-powerpivot可以实现,但是需要下载;access也可以,但是需要花钱买,可不可以在现有的EXCEL表里实现呢 有,用SQL就可以实现 利用SQL建立数据透视表的方法如下 首先新建一个sheet,用于创造数据透视表 然后点击数据-现有连接创建连接,如图 找到当前的工作表,打开 选择刚刚新建的创建数据透视表的sheet 在弹出的导入数据对话框进行如下设置 单机属性后在弹出的连接属性对话框输入命令文本 返回导入数据对话框,单击确定,即可生成数据透视表 再给大家介绍下与数据透视表配合使用的SQL的常用结构 SELECT 字段名1,字段名2,…,字段名n FROM [表1$] UNION ALL SELECT 字段名1,字段名2,…,字段名n FROM [表2$] UNION ALL … SELECT 字段名1,字段名2,…,字段名n FROM [表n$] 其中红色的是构成SQL的关键字,是构成SQL的骨架,可以从字面理解其含义,一般大小写均可,在同一行中需要与其他内容保持一个空格的距离 黑色的部分根据表的字段名、表名自行编写 比如我们以每个区域建立一个sheet,想汇总所有区域的数据,数据如下 (注:每个表第一行必须是字段名,如果不是,请把上方表头删除,表头尽量简单,不要有自动换行或括弧等符号) 使用的语句如下 SELECT 省份,区域,城市,城市级别,市城镇人口milion,市购买力milion FROM [东北$] UNION ALL SELECT 省份,区域,城市,城市级别,市城镇人口milion,市购买力milion FROM [华北$] UNION ALL SELECT 省份,区域,城市,城市级别,市城镇人口milion,市购买力milion FROM [华东$] UNION ALL SELECT 省份,区域,城市,城市级别,市城镇人口milion,市购买力milion FROM [华南$] UNION ALL SELECT 省份,区域,城市,城市级别,市城镇人口milion,市购买力milion FROM [华中$] UNION ALL SELECT 省份,区域,城市,城市级别,市城镇人口milion,市购买力milion FROM [西北$] UNION ALL SELECT 省份,区域,城市,城市级别,市城镇人口milion,市购买力milion FROM [西南$] 使用此语句每列顺序可以不一样,只要字段名(表头)一样就可以了 由于这些区域表头完全相同,还可以使用更加简单的sql语句 SELECT * FROM [东北$] UNION ALL SELECT * FROM [华北$] UNION ALL SELECT * FROM [华东$] UNION ALL SELECT * FROM [华南$] UNION ALL SELECT * FROM [华中$] UNION ALL SELECT * FROM [西北$] UNION ALL SELECT * FROM [西南$] 其中*代表全部字段(列)的意思 汇总后数据透视表如下 如果我把每页的区域列删掉,但是汇总的时候想加上区域字段怎么办? 用如下语句 SELECT "东北" AS 区域,* FROM [东北$] UNION ALL SELECT "华北" AS 区域,* FROM [华北$] UNION ALL SELECT "华东" AS 区域,* FROM [华东$] UNION ALL SELECT "华南" AS 区域,* FROM [华南$] UNION ALL SELECT "华中" AS 区域,* FROM [华中$] UNION ALL SELECT "西北" AS 区域,* FROM [西北$] UNION ALL SELECT "西南" AS 区域,* FROM [西南$] AS前面代表各个表所属的区域,AS后面代表汇总后数据透视表的字段名,文本需要加英文双引号 汇总后的数据透视表如下,区域字段又回来了 如果想汇总不同结构的数据表格,也可以用sql实现,举一个简单的栗子,汇总如下两个店的库存数据 使用如下语句 select 分店1商品 as 商品,库存 from [分店1$] union all select 分店2商品 as 商品,库存 from [分店2$] as 前面是各个表的字段名,as后面是数据透视表里面汇总用的统一字段名 汇总结果如下 用如上这些sql语句汇总的数据透视表,由于选择的是整个列的数据,明细新增一条记录的时候只要点击刷新就能把新增数据汇总进来,比如我们在分店1的库存里面加包辣条,在之前的数据透视表里面点击下刷新数据就更新了 关于更多数据透视表的内容,请关注我的微信公众号,molyexcel
|
|