Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 4027|回复: 1

excel 自定义变量的SQL怎么写

[复制链接]
发表于 2019-6-26 20:32 | 显示全部楼层 |阅读模式
1学分
求大神解答
以下是在MSSQL里面的语句,测试ok,转成在EXCEL执行,怎么写?  
里面的【应付日期】是变量

declare @s nvarchar(max) SET @s= ''
SELECT @s= @s+ ',' + quotename(TT.应付日期)
FROM ((SELECT ************)) AS TT
where (TT**************)   
group by TT.应付日期
order by TT.应付日期
SET @s= STUFF(@s,1,1,'' )
declare @sql nvarchar(max)
exec( 'SELECT ***********)) AS TT
where (TT********)  
group by  ***** order by TT*** ) t  pivot (sum(未付款金额) for 应付日期 in ('+@s+')) a' )

发表于 2019-6-27 08:50 | 显示全部楼层
语法方面,mssql里面怎么写,excel就怎么写,完全一样的。
不同的是需要定义ado对象才能引用mssql数据库,有好几种写法,下面是其中一种:
Dim Cn As Object
Dim Rec As Object
Dim strSql As String
Set Cn = CreateObject("adodb.connection")   '创建ado对象
Set Rec = CreateObject("ADODB.Recordset")  '创建ado数据集
'下面是连接mssql数据库,这里的参数不能错。如果不能通过,基本上错误的可能性都在这个地方
Cn.Open "rovider=SQLOLEDB.1;Integrated Security=SSPIersist Security Info=True;Initial Catalog=数据库名称写在这里;Data Source=数据库服务器名称写在这里;Use Procedure for Prepare=1;Auto Translate=Trueacket Size=4096;Workstation ID=电脑ID写在这里;Use Encryption for Data=False;Tag with column collation when possible=False"
'定义sql语句
strSql = "select ..... from 数据库表名称 where .... order by ....."   'sql里怎么写,这里也怎么写,一样的
Set Rec = Cn.Execute(strSql)   '执行sql语句,数据集结果在Rec对象中返回
剩下的就是你如何去使用返回的Rec数据集了。
最简单的就是全部一次性写在excel里
Range("A1").CopyFromRecordset Rec   '从 a1单元格开始写入数据
也可以自定义处理,通常是循环,好处是可以自定义处理数据:
While Not Rec.EOF
    x1 = Rec1.Fields(0).Value  '读取第一个字段
    x2 = Rec1.Fields(1).Value  '读取第二个字段
    .......
    对读取的数据做自定义处理
    ......
    Rec.MoveNext
Wend
Rec.Close    ‘关闭对象’
Cn.Close

大致就这样,如果有不对,可能是单词拼错了,或者你再百度搜一下,例子多得很。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-3-28 23:52 , Processed in 0.493543 second(s), 6 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表