ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 求助:使用SQL找出所有表一序号在表二中数据,合并在一起

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-6-1 16:51 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
各位大神:求助
      需求:
1、将与sheet1中所有设备序列号相同的,在sheet2中全部提取出来,与sheet1中的所有数据,合并在一起
2、需要使用sql方法

举例:29440316在sheet2中有7条,在sheet1中有1条
合并后按照设备序列号进行排序,所有序列号找出后全部数据显示在这里
我参考join /union等都没有成功,我的数据量很大,几十万条,所以需要使用sql,谢谢

表数据类型:请详见附件
设备序列号维修时间诊断原因维修内容
29440316
2018/5/2
误操作正常
29440316
2018/1/3
软件故障该设备多次出现身份证读取失败,之前调整更换均未解决,本次采集数据。白天忘记开call,具体采集时间为白天11点
29440316
2018/1/5
无故障清理二代证
29440316
2018/2/7
无故障巡检,清洁
29440316
2018/4/2
介质问题硬件正常,提交给后台处理
29440316
2018/4/12
介质问题拷贝数据
29440316
2018/5/2
软件故障调试软件
29440316
2018/5/9
软件故障重装系统

SQL找出所有表一序号在表二中数据,合并在一起.7z

1.29 MB, 下载次数: 19

找出与表一中序号在表二的所有数据

TA的精华主题

TA的得分主题

发表于 2018-6-2 00:09 | 显示全部楼层
  1. select * from (select * from [Sheet1$a:d]  union all select * from [Sheet2$a:d])
复制代码

TA的精华主题

TA的得分主题

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


上传附件时提示:Upload Error: 502

你把代码复制到你的文件即可。
  1. Sub test()
  2. Dim strConn, strSql
  3. Application.ScreenUpdating = False
  4. Set cnn = CreateObject("adodb.connection")
  5. strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties='Excel 12.0;IMEX=1;HDR=YES';Data Source=" & ThisWorkbook.FullName
  6. strSql = "SELECT * FROM (SELECT 设备序列号,维修时间,诊断原因,维修内容 FROM [Sheet1$] UNION ALL SELECT B.设备序列号,B.维修时间,B.诊断原因,B.维修内容 FROM [Sheet1$] A INNER JOIN [Sheet2$] B ON A.设备序列号=B.设备序列号) ORDER BY 设备序列号"
  7. cnn.Open strConn
  8. Range("a1").CurrentRegion.Offset(1).ClearContents
  9. Range("a2").CopyFromRecordset cnn.Execute(strSql, , 1)
  10. Application.ScreenUpdating = True
  11. End Sub
复制代码



评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-6-2 05:15 来自手机 | 显示全部楼层
数据量这么大,一次提取这么多,二个表相当于union,不能看那一条提取那一条吗?

TA的精华主题

TA的得分主题

发表于 2018-6-2 09:57 | 显示全部楼层
本帖最后由 opiona 于 2018-6-2 10:04 编辑

可选择性查询的:
  1.    
  2.     Set SH0 = Sheets("Sheet1")
  3.     Set SH2 = Sheets("Sheet2")
  4.     Set SH1 = Sheets("合并后效果")
  5.    
  6.     STRPUT = InputBox("输入查询序列号" & vbCrLf & "例如部分序列号:099" & vbCrLf & "空白 或者全部,则查询全部", "输入查询条件", "全部")
  7.     Rem 组合SQL语句
  8.     StrSQL = ""
  9.     StrSQL = StrSQL & "SELECT 设备序列号,维修时间,诊断原因,维修内容"
  10.     StrSQL = StrSQL & " FROM ("
  11.     StrSQL = StrSQL & "SELECT 设备序列号,维修时间,诊断原因,维修内容"
  12.     StrSQL = StrSQL & " FROM [" & SH0.Name & "$]"
  13.     If Len(STRPUT) > 0 And STRPUT <> "全部" Then
  14.         StrSQL = StrSQL & " WHERE INSTR(设备序列号,'" & STRPUT & "')>0"
  15.     Else
  16.         StrSQL = StrSQL & " WHERE  NOT 设备序列号 IS NULL"
  17.     End If
  18.     StrSQL = StrSQL & " UNION ALL "
  19.     StrSQL = StrSQL & " SELECT 设备序列号,维修时间,诊断原因,维修内容"
  20.     StrSQL = StrSQL & " FROM [" & SH2.Name & "$]"
  21.     If Len(STRPUT) > 0 And STRPUT <> "全部" Then
  22.         StrSQL = StrSQL & " WHERE INSTR(设备序列号,'" & STRPUT & "')>0"
  23.     Else
  24.         StrSQL = StrSQL & " WHERE  NOT 设备序列号 IS NULL"
  25.     End If
  26.     StrSQL = StrSQL & ") ORDER BY 设备序列号,维修时间,诊断原因,维修内容"
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-6-2 10:06 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-6-2 14:18 | 显示全部楼层
zpy2 发表于 2018-6-2 05:15
数据量这么大,一次提取这么多,二个表相当于union,不能看那一条提取那一条吗?


你们都理解错了。楼主的要求是查询Sheet1中所有设备号,如果Sheet2中也有该设备号的话,就查询出来,
然后跟Sheet1合并到一起,输出到Sheet3.

其实Sheet1的数据很少,就100多行,一个内连接+一个Union All,再Select排序,查询起来很快的。

不过还是放在数据库中更快,可以利用索引!

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-6-2 14:24 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-6-2 14:24 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
ivccav 发表于 2018-6-2 00:32
上传附件时提示:Upload Error: 502。

你把代码复制到你的文件即可。

http://club.excelhome.net/thread-1417326-1-1.html
您好能不能帮我看一下问题,谢谢您

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-6-2 18:53 | 显示全部楼层

谢谢,不过这不是我想要的结果。7楼理解了我的意思。不过还是非常谢谢你,我慢慢学习或许以后会用到
如果能按照题意帮我弄一个就更好了。
速度是关键,10秒以内,我都能接受。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-22 07:11 , Processed in 0.045629 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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