如何在 Excel 中使用 SQL 连接

2023-12-01

我看到大约一年前更新的一个问题,它让我在找到我需要的解决方案方面走了很长的路,但导致的问题多于答案。

首先我要说的是,我不是 SQL(DB2、SQLServer、Oracle)的“新手”,但对于在 Excel 中使用 SQL 来说,我是一个相对“新手”。另外,我在 2010 年工作,但必须保持与 2003 年的兼容性。

我想做的是将一张纸中的数据与另一张纸中的数据进行匹配并报告异常。我想从“未结订单”中选取 6 列,并将它们与“延期交货订单”中的 3 列相匹配,并且仅显示例外情况。 “未结订单”可以是 1..n,“延期交货订单”可以是 0..n。我只想抓住“延期交货”存在的行。

要编写普通的 SQL,我会这样做:

SELECT 
O.[Part Number], O.[Part Desc], O.[Source Domain], O.[Ship Qty], O.[Date Created],
B.[Dest Domain], B.[Quantity], B.[Date Created] 
FROM [OPEN LINES] O
JOIN [Back Orders] B ON O.[Part Number] = B.[Part Number]
WHERE B.[Part Number] IS NOT NULL
ORDER BY O.[Part Number] 

问题是我无法在没有错误的情况下通过连接。这是我到目前为止所拥有的。

rs.Open "SELECT [OPEN LINES$].[Part Number], [OPEN LINES$].[Part Desc], " $ _
"[OPEN LINES$]. [Source Domain], " & _
"[OPEN LINES$].[Ship Qty], [OPEN LINES$].[Date Created] " & _
"FROM [OPEN LINES$] " & _
"JOIN [Back Orders$] ON [OPEN LINES$].[Part Number] = [Back Orders$].[Part Number] " & _
"ORDER BY [OPEN LINES$].[Part Number] ;", cn

如果您能提供任何帮助,我将不胜感激。

Gord


尝试这个:

rs.Open "SELECT [OPEN LINES$].[Part Number], [OPEN LINES$].[Part Desc], " $ _
    " [OPEN LINES$]. [Source Domain], " & _
    " [OPEN LINES$].[Ship Qty], [OPEN LINES$].[Date Created] " & _
    " FROM [OPEN LINES$], [Back Orders$] " & _
    " WHERE [OPEN LINES$].[Part Number] = [Back Orders$].[Part Number] " & _
    " ORDER BY [OPEN LINES$].[Part Number]", cn

您不需要结尾分号。

这是一个更简单的例子(在XL2010中测试)

Sub SqlJoin()

    Dim oConn As New ADODB.Connection
    Dim oRS As New ADODB.Recordset
    Dim sPath
    Dim sSQL As String

    sSQL = "select a.blah from <t1> a, <t2> b where a.blah = b.blah"

    sSQL = Replace(sSQL, "<t1>", Rangename(Sheet1.Range("A1:A5")))
    sSQL = Replace(sSQL, "<t2>", Rangename(Sheet1.Range("C1:C3")))

    If ActiveWorkbook.Path <> "" Then
      sPath = ActiveWorkbook.FullName
    Else
      MsgBox "Workbook being queried must be saved first..."
      Exit Sub
    End If

    oConn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" & sPath & "';" & _
                 "Extended Properties='Excel 12.0;HDR=Yes;IMEX=1';"

    oRS.Open sSQL, oConn

    If Not oRS.EOF Then
        Sheet1.Range("E1").CopyFromRecordset oRS
    Else
        MsgBox "No records found"
    End If

    oRS.Close
    oConn.Close

End Sub

Function Rangename(r As Range) As String
    Rangename = "[" & r.Parent.Name & "$" & _
                r.Address(False, False) & "]"
End Function
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Excel 中使用 SQL 连接 的相关文章

  • 在 Oracle 中使用触发器记录对表的更改

    我的一门课有一个项目 当我们的两个表发生更改时 我们需要创建一个日志 插入 更新 删除 我们需要使用Oracle触发器和PL SQL 在日志文件中 我们需要记录用户ID 日期时间 IP地址和事件 插入 更新 删除 我知道如何设置触发器 但我
  • 如何将自定义类型数组传递给 Postgres 函数

    我有一个自定义类型 CREATE TYPE mytype as id uuid amount numeric 13 4 我想将它传递给具有以下签名的函数 CREATE FUNCTION myschema myfunction id uuid
  • 使用MySQL计算单个表中借方和贷方的余额

    下面的 MySQL 表包含带有关联金额的借方或贷方 操作 如何选择具有非零 余额 的所有 CLIENT ID 我尝试将表连接到自身以计算所有借方和贷方总额 但有些东西无法正常工作 CLIENT ID ACTION TYPE ACTION A
  • Postgres、更新和锁定顺序

    我正在研究 Postgres 9 2 有 2 个更新 每个更新都有自己的事务 一个看起来像 UPDATE foo SET a 1 WHERE b IN 1 2 3 4 另一个也类似 UPDATE foo SET a 2 WHERE b IN
  • 自动计算Excel VBA UDF与单元格属性相关

    我编写了一个 UDF 来计算特定颜色和特定线条样式的单元格 我发布了整个函数 Function CountTime rData As Range cellRefColor As Range As Variant Dim indRefColo
  • SQL Server 转换选择一列并将其转换为字符串

    是否可以编写一条从表中选择列并将结果转换为字符串的语句 理想情况下 我希望有逗号分隔的值 例如 假设 SELECT 语句看起来像这样 SELECT column FROM table WHERE column lt 10 结果是一列包含值的
  • VBA删除列中的单元格并根据单元格的值左移?

    如果单元格为空 如何删除 B 列 和左移 中的单元格 下面是我所拥有的 但它给出了 应用程序定义或对象定义的错误 Sub DeleteCellShiftLeft For i 1000 To 1 Step 1 If Cells i B Val
  • 从一个sql服务器选择到另一个sql服务器?

    我想将一台服务器 Data Old S1 中的一个表 T1 在 DB1 中 中的数据选择到另一台服务器 Data Latest S2 中的另一个表 T2 在 DB2 中 中的数据 我怎样才能做到这一点 请注意服务器的命名方式 查询也应该考虑
  • SQLSTATE[HY000] [2002] 资源暂时不可用 - mysql - innodb 和 pdo

    在我的错误日志中得到大量结果 如下所列 数据库中的所有表都是 innodb 并且就与这些表的任何交互而言 一切都是带有准备好的语句的 pdo 正如我所说 所有错误几乎与下面列出的错误相同 但发生在几个不同的页面上 无论页面如何 错误行始终指
  • 对具有许多索引的表进行缓慢的批量插入

    我尝试将数百万条记录插入到具有 20 多个索引的表中 在上次运行中 每 100 000 行花费了 4 个多小时 并且查询在 3 5 天后被取消 您对如何加快速度有什么建议吗 我怀疑是索引太多的原因 如果你也这么认为 如何在操作前自动删除索引
  • 在 VBA 中从范围创建数组

    我遇到了一个看似基本的问题 但找不到任何资源来解决它 简而言之 我只想将一系列单元格 所有一列 的内容加载到数组中 我能够通过以下方式完成此任务 DirArray Array Range A1 Range A2 但由于某种原因 我无法以这种
  • INNER JOIN 可用作 SELECT,但不能用作 DELETE [重复]

    这个问题在这里已经有答案了 为什么这个有语法错误 DELETE FROM print mailing request pmr INNER JOIN person p ON p id pmr person AND p email LIKE T
  • 在 pandas 中按范围加入/合并的最佳方式

    我经常使用 pandas 通过范围条件进行合并 连接 例如 如果有 2 个数据框 A A id A 值 B B id B 低 B 高 B 名称 它们很大并且大小大致相同 假设每个有 2M 条记录 我想在 A 和 B 之间进行内部联接 因此
  • SQL 插入失败 - 违反主键约束

    我在 SQL Insert 语句中看到一个非常奇怪的问题 我有一个简单的表 带有一个 ID 和 2 个日期时间 请参阅下面的创建脚本 CREATE TABLE dbo DATA POPULATION LOGS ID int IDENTITY
  • ActiveRecord 嵌套 SELECT——我可以在没有手动 SQL 的情况下完成它吗?

    我有一张桌子 上面有 除其他外 一个名字和一个等级 我想返回所有唯一名称的集合 但对于返回的每个名称 我想选择排名最高的行 这很简单 有两个嵌套的 SELECT 语句 SELECT FROM SELECT FROM foo ORDER BY
  • 具有日期和名称标准的 SUMIFS...仅限月份和年份

    我正在尝试获取 SUMIFS 公式来检查日期列 并仅对与标准日期的匹配年份和月份相对应的值求和 我还希望此 SUMIFS 包含名称标准和日期 IE 单元格 A1 SUMIFS Sheet1 O O Sheet1 D D Sheet2 DAT
  • SQLite 条件 ORDER BY 中的 DESC

    我需要选择按以下逻辑排序的记录 但是当 DESC 处于条件中时 SQLite 会引发错误 ORDER BY CASE WHEN parentGUID IS NULL THEN datePosted DESC ELSE datePosted
  • 从新的 xlsx 文件中删除宏

    功能部分 下面的代码将 xlsm 文件中的 2 个选项卡保存到新的 xlsx 文件中 文件保持打开状态以进行编辑 错误 xlsm 选项卡在工作表代码中有触发器 该触发器无效 一旦在 xlsx 工作表中输入任何内容 就会导致错误 所需输出 编
  • MySQL 中的 group_concat 性能问题

    我添加了一个group concat到一个查询并杀死了性能 添加之前和之后的解释计划是相同的 所以我对如何优化它感到困惑 这是查询的简化版本 SELECT curRow curRow 1 AS row number docID docTyp
  • 如何将 SQL“LIKE”与 LINQ to Entities 结合使用?

    我有一个文本框 允许用户指定搜索字符串 包括通配符 例如 Joh Johnson mit ack on 在使用 LINQ to Entities 之前 我有一个存储过程 该存储过程将该字符串作为参数并执行以下操作 SELECT FROM T

随机推荐

  • 你能创建一个Python生成器来以随机顺序提供一定范围内的值而不重复吗?

    我不确定这是否是那些不可能的问题之一 在我看来 这似乎应该是可能的 Edit 我们或多或少同意随机地这样做是不可能的 但伪随机是可能的 给定由两个整数指定的范围 即n1 n2 是否可以创建一个 python 生成器 从范围内生成一个随机整数
  • cx_Oracle 连接超时

    我正在尝试连接到 Oracle 数据库 但出现以下错误 curcon cx Oracle connect conn str cx Oracle DatabaseError ORA 12170 TNS 发生连接超时 这是代码块 conn st
  • TSR 程序用于更改 windows/dos 屏幕上字符的大小写

    我想知道如何使用C更改屏幕上字符的字母 它是一个使用dos h头文件的TSR程序 我也许可以从我早期本科生的记忆中得到部分帮助 在DOS下 地址0xB8000000 0xB800 0作为段 注释中正确指出的偏移量 是文本模式视频存储器的起始
  • 防止 jQuery UI 可调整大小的元素覆盖另一个元素?

    有没有办法限制元素的大小调整 以便不能覆盖另一个元素 我知道您可以将包含设置为父元素 但在这里我只想阻止用户遮挡另一个同级元素的视图 If resizing the dialog box on the left I want the plu
  • 除周末之外的日期时间序列 Python

    我正在尝试创建一系列日期时间对象 但不包括周末 到目前为止 我已经成功创建了从任何给定开始日期到结束日期的日期序列 但我无法弄清楚如何排除周末 Generate sequence of dates startDate datetime da
  • Clojure:使用代理和可变字段

    我在 Clojure 中使用代理来扩展 Java 类 我需要在超类中设置一个字段 我该怎么做 下面的代码不起作用 proxy BasicPlayer open url set super m dataSource url 来自的文档prox
  • C 中的 OR 运算符不起作用

    不明白为什么最后printf下面的代码中没有打印 255 char c c c 0 printf The value of c is d int c int j 255 c c j printf The value of c is d in
  • 使用 jQuery 模拟锚点点击的浏览器友好方式?

    我正在尝试使用 jQuery 模拟点击锚标记 我已经在 StackOverflow 和 Google 上挖掘了一段时间 但没有找到任何适用于我正在测试的所有浏览器的东西 到目前为止 我发现了这个 document ready functio
  • 在 Groovy 中从 String 对象动态创建闭包

    我想使用 Grails GORM 中的 Criteria API 创建一个查询 查询必须是这样的 MyEntity createCriteria list assoc parent eq code val 我需要的是从 String 对象动
  • XmlNode Innertext 中的回车符

    我正在使用 System Xml 来解析我生成的 xml 文件 节点的某些内部文本包含回车符 如下所示 r n r n 这是因为我在解析它之前使用 Visual Studio 对其进行了格式化 有没有办法去掉格式化工具添加的回车符 Than
  • 使用 jquery 禁用文本字段中字母的复制粘贴

    在我的项目中 我有只接受数字值的文本字段 但是当我使用 ctl c 复制字母并使用 ctl v 粘贴时 它将允许文本字段中的字母 所以我使用以下命令禁用复制和粘贴代码 input bind copy paste function e e p
  • xdebug 不激活断点

    我正在使用 Netbeans 来完成我的项目 codeigniter 并且我的 xdebug 在 php ini 中配置 以下是设置 zend extension C xampp php ext php xdebug dll xdebug
  • 使用 mongoengine 将文件上传到 DEFAULT_FILE_STORAGE 而不是 GridFs

    我希望能够在亚马逊 s3 中存储文件 mongoengine中的FileField似乎是用gridfs硬编码的 我可以做什么来实现这个目标 是否有一个自定义文件字段 其行为类似于常规的 django FileField 我还没有看到与 Mo
  • 使用 EntityDataSource 过滤数据

    我使用 EF 4 C 和 MS 会员提供程序 我有一个带有 DataSource 和 EntityDataSource Web 控件的 GridView 我想使用 EntityDataSource 过滤数据 过滤器显示适用于当前登录的用户
  • 循环遍历集合 -Laravel

    I was trying to loop through a collection based on the key 在我看来 我在这里试图完成的是根据字母表对每家公司进行分组 我该如何循环这个 results companies gt s
  • MProtect Errno 12 (ENOMEM) 的说明

    我正在使用 Monotouch 编写 iPhone 应用程序 最近该应用程序开始崩溃 并指出 Mprotect failed at 0x863a000 length 8192 with errno 12 接下来是相当长的堆栈跟踪和 Spri
  • 为什么C++中没有放置删除表达式?

    为什么C 没有直接对应于new的placementdelete 即调用析构函数并调用适当的placementdelete运算符 例如 MyType p new arena MyType current technique p gt MyTy
  • DRF将ArrayField序列化为字符串

    我有一个带有 ArrayField 的模型tags我需要它来回序列化为以逗号分隔的值字符串 模型 py from django contrib postgres fields import ArrayField class Snippet
  • 有没有一种 LINQ 方法可以从键/值对列表转到字典?

    有没有一种 LINQ 方法可以做到这一点 var array new string BASE TABLE Table VIEW View var list array ToList var dictionary new Dictionary
  • 如何在 Excel 中使用 SQL 连接

    我看到大约一年前更新的一个问题 它让我在找到我需要的解决方案方面走了很长的路 但导致的问题多于答案 首先我要说的是 我不是 SQL DB2 SQLServer Oracle 的 新手 但对于在 Excel 中使用 SQL 来说 我是一个相对