Excel表中连接sql并使用sql语句引用excel单元格数据作为查询条件 20

需要将SQL数据库中的数据做统计,现在数据库连接以及数据统计实现了。不过有个不方便的地方,就是我的查询统计语句中涉及到时间段,每次在SQL语句中去输入时间太麻烦了,想在E... 需要将SQL数据库中的数据做统计,现在数据库连接以及数据统计实现了。
不过有个不方便的地方,就是我的查询统计语句中涉及到时间段,每次在SQL语句中去输入时间太麻烦了,想在Excel表中使用两个单元格输入时间,在这个SQL查询统计语句中调用这两个单元格的值作为查询条件,请问怎么实现?
现在的查询语句如下:

select count(*) as expr1
from sql表
where (DLY='ABC') and (rq >= '2014-03-01') and (rq <='2014-03-31')

想调用Excel表中两个单元格的值来替换语句中的两个日期,请问怎么调用?
展开
 我来答
刺友互
高粉答主

2019-09-30 · 每个回答都超有意思的
知道答主
回答量:3979
采纳率:100%
帮助的人:72.4万
展开全部

1、将需要处理的记录复制到一个新的工作表,然后将在数据库表中存在唯一值的列(比如物料编码)后插入一列,用 CONCATENATE函数将其前后加上“'”。

2、将加“'”的这列数据复制到一个文本文件中。

3、关闭并保存这个新的文本文件,然后用Word 将其打开。

4、快捷键Ctrl+F,点击“替换”,查找内容中输入“^p”,替换为输入“,”。

5、在 sql server 的查询界面,输入以下SQL语句:use 数据库名,select * from  表名  ,where  字段名  in ,(Word 中的文本)。

xiaoxi1981
2017-09-05 · TA获得超过1197个赞
知道小有建树答主
回答量:961
采纳率:72%
帮助的人:336万
展开全部

select count(*) as expr1
from sql表
where (DLY='ABC') and (rq >= ?) and (rq <=?)

1、将两个日期的地方改为 ? ,然后exel会提示你输入参数的值,

2、在 Microsoft Qyery中,点视图--参数,给两个参数命名。

3、返回到Excel,在表格区域点右键--表格--参数,弹出查询参数对话框。

4、给每个参数指定单元格,根据需要勾选 单元格值更改时自动刷新。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友db08f13
2014-04-17 · TA获得超过686个赞
知道小有建树答主
回答量:998
采纳率:80%
帮助的人:200万
展开全部
//2007和2010版本:
 SELECT *
 FROM OpenDataSource( 'Microsoft.ACE.OLEDB.12.0',
 'Data Source="c:\book1.xlsx";User ID=Admin;Password=;Extended properties=Excel 12.0')...[Sheet1$]

SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0;Database=C:\book1.xlsx', 'SELECT * FROM [Sheet1$A1:D100]')

SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0;Database=C:\book1.xlsx', 'SELECT * FROM [Sheet1$]')
//2003版本:
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 8.0')...[Sheet1$]

SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=C:\book1.xls', 'SELECT * FROM [Sheet1$]')

SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=C:\book1.xls', 'SELECT * FROM [Sheet1$A1:D100]')

//而且,还需要用拥有服务器sysadmin角色权限的登录帐号,先执行下列语句打开SQL SERVER的'Ad Hoc Distributed Queries'开关。
exec sp_configure 'show advanced options',1;reconfigure;
exec sp_configure 'Ad Hoc Distributed Queries',1;reconfigure;

//执行查询后,再用相反顺序的语句,关闭'Ad Hoc Distributed Queries'开关。
 
exec sp_configure 'Ad Hoc Distributed Queries',0;
reconfigure;exec sp_configure 'show advanced options',0;reconfigure;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cnbubble
2017-06-30 · TA获得超过2607个赞
知道大有可为答主
回答量:1990
采纳率:83%
帮助的人:767万
展开全部
把 日期位置'2014-03-01',改为Range("A1").Text
另一个日期类似处理。
A1改为实际的日期所在的单元格。
如果语句在模块中,Range前面加上 Worksheets("Sheet1").
或者Worksheets(1).
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
skyzxh

2017-06-29 · 知道合伙人软件行家
skyzxh
知道合伙人软件行家
采纳数:2623 获赞数:8344
毕业于中科院,硕士,30年工程从业经验。现任公司技术负责。

向TA提问 私信TA
展开全部
假设两个日期分别写在b1和c1,则后面部分为 (rq >= [b1]) and (rq <=[c1])
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式