如果有多個(gè)表,存在相同列,想把這些數(shù)據(jù)匯總到一個(gè)表里面進(jìn)行各種統(tǒng)計(jì)怎么辦? excel里面有個(gè)插件-powerpivot可以實(shí)現(xiàn),但是需要下載;access也可以,但是需要花錢買,可不可以在現(xiàn)有的EXCEL表里實(shí)現(xiàn)呢 有,用SQL就可以實(shí)現(xiàn) 利用SQL建立數(shù)據(jù)透視表的方法如下 首先新建一個(gè)sheet,用于創(chuàng)造數(shù)據(jù)透視表 然后點(diǎn)擊數(shù)據(jù)-現(xiàn)有連接創(chuàng)建連接,如圖 找到當(dāng)前的工作表,打開 選擇剛剛新建的創(chuàng)建數(shù)據(jù)透視表的sheet 在彈出的導(dǎo)入數(shù)據(jù)對話框進(jìn)行如下設(shè)置 單機(jī)屬性后在彈出的連接屬性對話框輸入命令文本 返回導(dǎo)入數(shù)據(jù)對話框,單擊確定,即可生成數(shù)據(jù)透視表 再給大家介紹下與數(shù)據(jù)透視表配合使用的SQL的常用結(jié)構(gòu) SELECT 字段名1,字段名2,…,字段名n FROM [表1$] UNION ALL SELECT 字段名1,字段名2,…,字段名n FROM [表2$] UNION ALL … SELECT 字段名1,字段名2,…,字段名n FROM [表n$] 其中紅色的是構(gòu)成SQL的關(guān)鍵字,是構(gòu)成SQL的骨架,可以從字面理解其含義,一般大小寫均可,在同一行中需要與其他內(nèi)容保持一個(gè)空格的距離 黑色的部分根據(jù)表的字段名、表名自行編寫 比如我們以每個(gè)區(qū)域建立一個(gè)sheet,想?yún)R總所有區(qū)域的數(shù)據(jù),數(shù)據(jù)如下 (注:每個(gè)表第一行必須是字段名,如果不是,請把上方表頭刪除,表頭盡量簡單,不要有自動(dòng)換行或括弧等符號) 使用的語句如下 SELECT 省份,區(qū)域,城市,城市級別,市城鎮(zhèn)人口milion,市購買力milion FROM [東北$] UNION ALL SELECT 省份,區(qū)域,城市,城市級別,市城鎮(zhèn)人口milion,市購買力milion FROM [華北$] UNION ALL SELECT 省份,區(qū)域,城市,城市級別,市城鎮(zhèn)人口milion,市購買力milion FROM [華東$] UNION ALL SELECT 省份,區(qū)域,城市,城市級別,市城鎮(zhèn)人口milion,市購買力milion FROM [華南$] UNION ALL SELECT 省份,區(qū)域,城市,城市級別,市城鎮(zhèn)人口milion,市購買力milion FROM [華中$] UNION ALL SELECT 省份,區(qū)域,城市,城市級別,市城鎮(zhèn)人口milion,市購買力milion FROM [西北$] UNION ALL SELECT 省份,區(qū)域,城市,城市級別,市城鎮(zhèn)人口milion,市購買力milion FROM [西南$] 使用此語句每列順序可以不一樣,只要字段名(表頭)一樣就可以了 由于這些區(qū)域表頭完全相同,還可以使用更加簡單的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 [西南$] 其中*代表全部字段(列)的意思 匯總后數(shù)據(jù)透視表如下 如果我把每頁的區(qū)域列刪掉,但是匯總的時(shí)候想加上區(qū)域字段怎么辦? 用如下語句 SELECT "東北" AS 區(qū)域,* FROM [東北$] UNION ALL SELECT "華北" AS 區(qū)域,* FROM [華北$] UNION ALL SELECT "華東" AS 區(qū)域,* FROM [華東$] UNION ALL SELECT "華南" AS 區(qū)域,* FROM [華南$] UNION ALL SELECT "華中" AS 區(qū)域,* FROM [華中$] UNION ALL SELECT "西北" AS 區(qū)域,* FROM [西北$] UNION ALL SELECT "西南" AS 區(qū)域,* FROM [西南$] AS前面代表各個(gè)表所屬的區(qū)域,AS后面代表匯總后數(shù)據(jù)透視表的字段名,文本需要加英文雙引號 匯總后的數(shù)據(jù)透視表如下,區(qū)域字段又回來了 如果想?yún)R總不同結(jié)構(gòu)的數(shù)據(jù)表格,也可以用sql實(shí)現(xiàn),舉一個(gè)簡單的栗子,匯總?cè)缦聝蓚€(gè)店的庫存數(shù)據(jù) 使用如下語句 select 分店1商品 as 商品,庫存 from [分店1$] union all select 分店2商品 as 商品,庫存 from [分店2$] as 前面是各個(gè)表的字段名,as后面是數(shù)據(jù)透視表里面匯總用的統(tǒng)一字段名 匯總結(jié)果如下 用如上這些sql語句匯總的數(shù)據(jù)透視表,由于選擇的是整個(gè)列的數(shù)據(jù),明細(xì)新增一條記錄的時(shí)候只要點(diǎn)擊刷新就能把新增數(shù)據(jù)匯總進(jìn)來,比如我們在分店1的庫存里面加包辣條,在之前的數(shù)據(jù)透視表里面點(diǎn)擊下刷新數(shù)據(jù)就更新了 關(guān)于更多數(shù)據(jù)透視表的內(nèi)容,請關(guān)注我的微信公眾號,molyexcel
|
|