mssql 将查询结果作为表名参数_想做动态查询清单?这个方法最简便!

终于等到你了,我是爱踢汪。今天本汪就借某单位的销售数据分享一篇Microsoft Query做多表动态查询销售业绩清单的技术,解救各位销售助理、销售文员。下面以销售人员业绩动态查询为例介绍Microsoft Query多表动态查询制作。如下图,桌面“销售数据”文件夹里,包含了11月5日到11月7日三天的销售数据。

47021b6647428ed964e293bbb605ae10.png

每个工作簿里的内容都是当天所有业务人员的销售数据。三个工作簿字段名都是一致的。

c58d048065437d91fffc9f5f97973871.png

我们要做的动态跨表查询如下:

b3d51a1448998e0b30b171583ef3dab1.gif

根据上图我们能看到,改变业务人员的姓名,下方数据区域就会自动筛选出三个工作表里该业务人员的销售记录。这里为了方便查询,姓名使用数据验证下拉菜单来显示。当然在单元格直接输入姓名也可以达到同样的效果。

这是怎么做到的呢?来跟我一起学习吧!

Step 01 建立查询表

保存关闭三个工作簿,新建工作簿,在A1单元格输入“业务人员”,A2单元格输入其中一个业务员的姓名“杨光”(这里也可以建立下拉菜单,有兴趣的小伙伴可以自己试试)。

28613bdd67d8f981edd56c7291602866.png

Step 02 初步指定查询的数据源

点击【数据】选项卡下【获取外部数据】组里“自其他来源”下拉菜单的“来自Microsoft Query”。

1816071e7642e7c62281d8d6d792ae46.png

在【选择数据源】窗口“数据库”选项下点击“Excel Files”,勾选下方的“使用[查询向导]创建/编辑查询”,点击确定。

8242fe40e5667fcd10756feb4db1b9cb.png

在【选择工作簿】窗口右侧目录里找到数据源所在的文件夹,在左侧数据库名找到其中一个工作簿,点击确定。

39a663ff39c5f44e12b47bd32595a312.png

接下来有两种可能:系统弹出提示窗口和不弹出提示窗口。弹出提示从(1)开始,不弹出提示直接从(2)开始。

(1)系统提示“数据源中没有包含可见的表格”,如下,直接点击确定。

1da12d9567e92fd8fc4af318d6d4a711.png

进入【查询向导-选择列】窗口,点击下面的“选项”按钮,打开右侧【表选项】窗口,勾选“系统表”点击确定。

66ee287be4934b3e5f6df86eb43282f1.png

这样【查询向导-选择列】窗口中就会出现数据源里的工作表了。

(2)在【查询向导-选择列】窗口中选中工作表点击中间的“>”按钮把左侧的“可用的表和列”添加到右侧的“查询结果中的列”,点击下一步。

29bec43a6163b5c90963f2498de5f55a.png

进入【查询向导-筛选数据】窗口,不用操作,点击下一步。

2d0abfbe1e4cc009e92f0af974d6294b.png

进入【查询向导-排序顺序】窗口,同样不用操作,点击下一步。

40cfea970fd6b79d1c8be5425688cff4.png

进入【查询向导-完成】窗口,选择“将数据返回Microsoft Excel”,点击完成。

aed8dc8479f73ac0741b5ef8e1d6217d.png

Step 03 指定所有查询数据并设置查询条件

在EXCEL中出现【导入数据】窗口,我们选择显示为“表”,位置放置在现有工作表。点击下方左侧的“属性”按钮。

b7a978217c5ce419a20f70447d3ee6a5.png

打开【连接属性】窗口,在“定义”选项卡里的“命令文本”输入框中输入下列文本。注意,读者应该根据自己的文件修改工作簿路径和工作表名、查询条件。

SELECT * FROM [C:UsersAdministratorDesktop销售数据11.5销售数据.xlsx].[Sheet1$] where 业务人员=? union all

SELECT * FROM [C:UsersAdministratorDesktop销售数据11.6销售数据.xlsx].[Sheet1$] where 业务人员=? union all

SELECT * FROM [C:UsersAdministratorDesktop销售数据11.7销售数据.xlsx].[Sheet1$] where 业务人员=?

dc5024c091d8ee20e09b2ea3903de54e.png

解析:

SELECT * FROM [C:UsersAdministratorDesktop销售数据11.5销售数据.xlsx].[Sheet1$] where 业务人员=? union all

这里使用了SQL语句。意思是根据业务人员的名称在指定的工作表中查询表中所有列数据。

SELECT 列名 :指定要查询的数据列,譬如“SELECT [Sheet1$].日期, [Sheet1$].商品代码, [Sheet1$].金额”,就表示只查询、显示Sheet1表中日期、商品代码、金额三列数据。当前“SELECT *”,“*”是通配符,代表所有列,也就是表格中所有内容。

FROM 表名称:指定要查询的工作簿以及工作表名,由两部分组成[].[],前部分是工作簿路径,后部分是工作表名称。譬如当前“FROM [C:UsersAdministratorDesktop销售数据11.5销售数据.xlsx].[Sheet1$]”就表示查询工作簿“11.5销售数据.xlsx”中的Sheet1工作表。读者需要根据自己的文件路径来设置。

where 查询条件:指定按什么条件进行查询。譬如“where 业务人员=?”表示按输入的业务人员的姓名进行查询。因为需要按输入的内容进行查询,所以后续需要指定输入的位置。

union all:指的是把查询的下一个工作表的结果与当前的查询连接排列。最后一个工作表就不能写这句代码了。譬如当前最后一个工作簿“11.7销售数据.xlsx”后就没有“union all”语句。

注意:这里的所有符号必须是英文状态下的。

Step 04 指定查询条件的输入位置

点击两次确定。弹出【输入参数值】窗口,鼠标单击B1单元格在参数1中指定查询条件输入位置“=Sheet1!$B$1”。分别勾选“在以后的刷新中使用该值或该引用”和“当单元格值更改时自动刷新”复选项,点击确定。

ae27bbf9ce2b0dce71d287f169bc8052.png

然后用同样的方式设置参数2和参数3。这样就完成了。

5f4e5ab14e6588c9936cafd800bb24aa.png

后续当我们在B1单元格输入其他业务员名字时,下方就能自动刷新出对应结果了。不过输入的时候,名字要完全正确系统才能查询到。

Microsoft Query动态查询

优势和不足

使用Microsoft Query进行动态查询具有以下优势:

◎不用记函数

◎避免VLOOKUP等函数无法一对多查询的弊端

使用Microsoft Query进行动态查询的不足:

如果数据表很多,逐个定义连接属性和参数很繁琐的。

适用条件

使用Microsoft Query建立跨表动态查询需要满足下方条件:

◎各个表的字段一致

◎各个表中不能有其他无关数据

后续操作

如果后续需要增加或者减少查询数据源怎么办?

(1)点中查询结果的某个单元格,单击“数据”选项卡“连接”功能组中的“属性”按钮。

a2829e54d3fea367d5a03fd22c8050a3.png

(2)在弹出的“外部数据属性”对话框中单击“连接属性”按钮 。

d19546ccac38c07e78cf40a59c1ba02f.png

(3)进入“连接属性”对话框,单击“定义”选项卡,修改“命令文本”中的语句,增减工作表即可。

c27d2d197ea1820f035cd45240bde4a3.png

今天的分享就到这里了。我是爱踢汪,您的关注是我坚持到现在的唯一动力,有了您的支持与鼓励,我才有信心一直坚持下去,继续奉上更多内容。衷心期待您能点一下上面红色关注按钮,关注我一下。万分感谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值