ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 4694|回复: 6

[求助] SQL 为什么不能对TRANSFORM结果进行再查询

[复制链接]

TA的精华主题

TA的得分主题

发表于 2009-6-20 17:54 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
好像不能对Transform进行再次查询,有何办法解决?

或者有没有办法不用Transform,用别的SQL语句实现得到我要的结果呢
见附件

test.zip

7.21 KB, 下载次数: 116

TA的精华主题

TA的得分主题

发表于 2009-6-20 20:58 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
http://club.excelhome.net/viewth ... ight=%2Bsunsoncheng

这是我想申请加精却被拒绝的,

个人认为,变通后可达到你要的结果

TA的精华主题

TA的得分主题

发表于 2009-6-20 22:53 | 显示全部楼层
这样?
transform sum(pj.pjz+cyw) SELECT yb.CCY from (SELECT LEFT(RIC,3) AS CCY,IIF(MID(RIC,4,LEN(RIC)-4)='','SPOT',MID(RIC,4,LEN(RIC)-4)) as fl,iif(fl='SPOT',0,(BID+ASK)/2/10000) as cyw  FROM [Data$]) as yb,(SELECT LEFT(RIC,3) AS CCY,(BID+ASK)/2 as pjz from [Data$] where MID(RIC,4,LEN(RIC)-4)='') as pj where yb.ccy=pj.ccy group by yb.ccy pivot fl

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-6-21 11:27 | 显示全部楼层
学习学习啦,都是高手啊。 看来我思维太僵化了,以后得好好练练

另外,还有个与Transform相关的问题,语法中 有PIVOT。。。IN 。。。
为什么我试验中,IN后面只能使用常量,而不能用 IN (SELECT .... FROM ....),也就是为什么在这里的IN后面不能是一个自查询

TA的精华主题

TA的得分主题

发表于 2009-6-21 12:08 | 显示全部楼层

好象不能用,可采取变通的办法,在代码中用自定义函数解决

Public Function TakeList(Rst As ADODB.Recordset)
    TakeList = "'" & Rst.GetString(, , , "','") & "'"
End Function
Sub test()
    Dim conn As New ADODB.Connection
    Dim Rst As New ADODB.Recordset
    conn.Open "dsn=mychgl"
    Set Rst = conn.Execute("select 存货编号 from chzd where 存货编号 like '0001%'")
    Set Rst = conn.Execute("select 存货名称 from chzd where 存货编号 in(" & TakeList(Rst) & ")")
    MsgBox TakeList(Rst)
End Sub

TA的精华主题

TA的得分主题

发表于 2009-7-22 23:42 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
我的SQL语句如下:
transform sum(data) select CCY from
(
select x.CCY,x.col,y.data
from
(select CCY,col,sum(0) as data3
from
(select MID(RIC,4,LEN(RIC)-4) as col
from [Data$]
where len(RIC)>4)a,
(select LEFT(RIC,3) AS CCY
from [Data$]
) b
group by CCY,col) x
left join  
(select LEFT(RIC,3) AS CCY, 'SPOT' as col,(BID+ASK)/2 as data
from [Data$]
where len(RIC)=4) y
on x.CCY=y.CCY
union all
select LEFT(RIC,3) AS CCY, MID(RIC,4,LEN(RIC)-4) as col,(BID+ASK)/20000 as data2
from [Data$]
where len(RIC)>4
)
group by CCY
PIVOT col

TA的精华主题

TA的得分主题

发表于 2009-9-21 09:56 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
SQL可以这样自定义函数,谢谢.
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-22 21:18 , Processed in 0.046304 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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