ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: autumnalRain

[分享] 我的SQL学习贴

  [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-2-17 15:45 | 显示全部楼层
魂断蓝桥 发表于 2016-2-17 15:06
这样试一下

采购表 定义名称ttt

多谢老师!但有个问题,因为采购是个长期存续的工作,所以存在这种情况,比如A销售后还在继续采购,上面的语句会得到最后日期的价格,而这个日期大于销售日期。如aaa表中t1列a单价应该为10,而不是12。请再指导下吧
ttt
日期
名称
单价
2016/1/1
A
11
2016/1/2
C
12
2016/1/3
B
47
2016/1/4
A
10
2016/1/5
D
43
2016/1/6
C
20
2016/1/7
D
50
2016/1/8
E
18
2016/1/9
E
20
2016/1/10
A
12
2016/1/11
E
22




aaa

日期名称t1采购单价
2016/1/7
A
12
10
2016/1/9
C
20
20
2016/1/10
D
50
50
2016/1/12
E
22
22
2016/1/13
B
47
47


TA的精华主题

TA的得分主题

发表于 2016-2-17 15:45 | 显示全部楼层
本帖最后由 zhaogang1960 于 2016-2-17 15:48 编辑

这类问题我一般用字典处理,用SQL语句处理wuxiang_123版主比较在行
下面可能是最笨的SQL方法了,请参考:
Sub 宏1()
    Dim cnn As Object, SQL$, t1$, t2$, t3$, t4$
    Set cnn = CreateObject("ADODB.Connection")
    cnn.Open "Provider = Microsoft.ace.Oledb.12.0;Extended Properties =Excel 12.0;Data Source =" & ThisWorkbook.FullName
    t1 = "[出库表$" & Sheets("出库表").Range("A1").CurrentRegion.Address(0, 0) & "]"
    t2 = "[采购价格表$" & Sheets("采购价格表").Range("b4").CurrentRegion.Address(0, 0) & "]"
    t3 = "(Select b.* from " & t1 & " a," & t2 & " b where a.名称=b.名称 and a.日期>=b.日期)"
    t4 = "Select x.* from " & t3 & " x inner join (select 名称,max(日期) as max_date from " & t3 & " group by 名称) y on x.名称=y.名称 and x.日期=y.max_date"
    SQL = "select 单价 from " & t1 & " m left join (" & t4 & ") n on m.名称=n.名称"
    [c2].CopyFromRecordset cnn.Execute(SQL)
    cnn.Close
    Set cnn = Nothing
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2016-2-17 15:46 | 显示全部楼层
本帖最后由 zhaogang1960 于 2016-2-17 15:47 编辑

请测试附件
后进先出法如何用SQL语句获取单价.rar (20.73 KB, 下载次数: 77)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-2-17 15:51 | 显示全部楼层
zhaogang1960 发表于 2016-2-17 15:45
这类问题我一般用字典处理,用SQL语句处理wuxiang_123版主比较在行
下面可能是最笨的SQL方法了,请参考:
...

多谢zhaogang1960大师!。一直想求得能简单些的语句,今天赵老师解答了,看来这个SQL语句真得这么复杂了!所以这个问题看似简单,用SQL却要复杂得多!

TA的精华主题

TA的得分主题

发表于 2016-2-17 15:54 | 显示全部楼层
autumnalRain 发表于 2016-2-17 15:51
多谢zhaogang1960大师!。一直想求得能简单些的语句,今天赵老师解答了,看来这个SQL语句真得这么复杂了 ...

求助wuxiang_123版主吧
我没有研究过这类SQL语句,只是当数组、字典法实在不方便解决时才用SQL

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-2-17 15:54 | 显示全部楼层
zhaogang1960 发表于 2016-2-17 15:54
求助wuxiang_123版主吧
我没有研究过这类SQL语句,只是当数组、字典法实在不方便解决时才用SQL

再次感谢大师了!

TA的精华主题

TA的得分主题

发表于 2016-2-17 19:29 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2016-12-11 17:32 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2017-1-10 08:28 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2017-4-12 13:03 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

老师:期待更新....
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-19 22:23 , Processed in 0.050864 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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