Home 技术笔记 Office Excel SQL 查询语...

Excel SQL 查询语法示例

0

学习EXCEL王佩丰老师数据透视表 SQL语句整理

本文整理了常见 Excel SQL(Access 引擎 / ODBC / OLEDB)查询的写法,包括单表查询、合并多表、增加标识、跨文件查询、以及多表 JOIN。


1. 引用单张 Excel 工作表

select * from [数据$]

2. 合并(UNION)多张结构相同的表

方式一:直接 select *

select * from [苏州$]
union all
select * from [无锡$]
union all
select * from [昆山$]

方式二:明确字段(推荐)

select 日期, 产品类别, 金额 from [苏州$]
union all
select 日期, 产品类别, 金额 from [无锡$]
union all
select 日期, 产品类别, 金额 from [昆山$]

3. 合并多表并增加“城市”标识字段

A.* 方式(表结构完全一致时)

select '苏州' as 城市, A.* from [苏州$] as A
union all
select '无锡' as 城市, B.* from [无锡$] as B
union all
select '昆山' as 城市, C.* from [昆山$] as C

手动指定字段方式(更安全)

select '苏州' as 城市, 日期, 产品类别, 金额 from [苏州$]
union all
select '无锡' as 城市, 日期, 产品类别, 金额 from [无锡$]
union all
select '昆山' as 城市, 日期, 产品类别, 金额 from [昆山$]

4. 合并结构不同的表(用 null 对齐列)

UNION 的规则:列数一致、顺序一致

示例:汇总实际完成 + 计划完成

select
    '实际完成' as 类型,
    日期,
    销售部门,
    所属区域,
    产品类别,
    金额
from [销售数据$]

union all

select
    '计划完成' as 类型,
    计划日期     as 日期,
    null          as 销售部门,
    所属区域,
    产品类别,
    金额
from [销售计划$]

5. 合并计划销量 + 实际销量

select
    '实际销量' as 类型,
    日期,
    销售部门,
    所属区域,
    产品类别,
    金额
from [销售数据$]

union all

select
    '计划销量' as 类型,
    null         as 日期,
    销售部门,
    所属区域,
    产品类别,
    金额
from [销售计划$]

6. 引用其他 Excel 文件中的工作表

使用 OLEDB/ODBC 格式:

select
    '南京' as 城市,
    '宠物用品' as 产品类别,
    A.*
from [Excel 8.0;HDR=YES;Database=e:\数据\数据1\南京.xls].[宠物用品$] as A

多城市多产品类别(合并示例)

select '南京' as 城市,'宠物用品' as 产品类别, A.*
from [Excel 8.0;HDR=YES;Database=e:\数据\数据1\南京.xls].[宠物用品$] as A

union all
select '南京', '警告标志', B.*
from [Excel 8.0;HDR=YES;Database=e:\数据\数据1\南京.xls].[警告标志$] as B

union all
select '南京', '户外睡袋', C.*
from [Excel 8.0;HDR=YES;Database=e:\数据\数据1\南京.xls].[户外睡袋$] as C

union all
select '苏州', '宠物用品', D.*
from [Excel 8.0;HDR=YES;Database=e:\数据\数据1\苏州.xls].[宠物用品$] as D

union all
select '苏州', '警告标志', E.*
from [Excel 8.0;HDR=YES;Database=e:\数据\数据1\苏州.xls].[警告标志$] as E

union all
select '苏州', '户外睡袋', F.*
from [Excel 8.0;HDR=YES;Database=e:\数据\数据1\苏州.xls].[户外睡袋$] as F

7. 两表关联(JOIN)

最基础的 LEFT JOIN

select *
from [数据$]
left join [产品信息$]
    on [数据$].产品类别 = [产品信息$].品名

指定字段

select [数据$].产品类别, [产品信息$].产品单价
from [数据$]
left join [产品信息$]
    on [数据$].产品类别 = [产品信息$].品名

先取产品单价,再取全部数据

select B.产品单价, A.*
from [数据$] as A
left join [产品信息$] as B
    on A.产品类别 = B.品名

常用表别名写法

select A.产品类别, A.数量, B.产品单价
from [数据$] as A
left join [产品信息$] as B
    on A.产品类别 = B.品名

8. 多表 JOIN(层层关联)

JOIN 产品信息 + 促销信息

select
    A.*,
    B.[P/N],
    B.产品单价,
    C.折扣
from [数据$] as A
left join [产品信息$] as B
    on A.产品类别 = B.品名
left join [促销信息$] as C
    on A.产品类别 = C.品名

NO COMMENTS

LEAVE A REPLY

Please enter your comment!
Please enter your name here

退出移动版