mysql - 执行 SQL 查询,从 VBA 宏中的 Excel 表获取输入

标签 mysql sql excel

我想从 Excel 表格中获取输入来执行 SQL 查询并将其输出到 Excel 工作表中的某个位置。

宏:

Sub SQL(Dim strSQL as String)

Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset

strFile = ThisWorkbook.FullName
strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strFile _
& ";Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1"";"

Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")

cn.Open strCon

rs.Open strSQL, cn

Debug.Print rs.GetString

End Sub

SQL 查询:

SELECT
  e.`isin`,
  b.*
FROM
  `risk_reference`.`basket_debt` AS b
  JOIN `risk_reference`.`etp` AS e
    ON IF(
      e.`parentid_override` > 0,
      e.`parentid_override`,
      e.`parentid`
    ) = b.`parentid`
    AND e.`isin` = ?
    AND e.`date_out` IS NULL
WHERE b.`processing_date` IN
  (SELECT
    MAX(processing_date)
  FROM
    `risk_reference`.`basket_debt`)
GROUP BY e.`isin`, b.`pk_id`

那个?在 SQL 查询中,我需要根据 Excel 中的表格输入项目列表。

我应该逐项进行 SQL 查询还是可以一次性完成?如果是这样,我该怎么做?如果我逐行执行,如何输出 Excel 中的一个位置?

需要一些建议。

最佳答案

假设您的 sql 变体支持它,请使用 IN 并循环单元格来构建列表

strsql = "SELECT e.`isin`, b.* FROM `risk_reference`.`basket_debt` AS b JOIN "
strsql = strsql & "`risk_reference`.`etp` AS e ON IF( e.`parentid_override` > 0, "
strsql = strsql & "e.`parentid_override`, e.`parentid`) = b.`parentid`"
strsql = strsql & "AND e.`isin` IN ("
dim c as range
for each c in range("your range here")
   strsql = strsql & "'" & c.text & "',"
next c
strsql = strsql & ") "
strsql = strsql & "AND e.`date_out` IS NULL WHERE b.`processing_date` IN "
strsql = strsql & "(SELECT MAX(processing_date) FROM `risk_reference`.`basket_debt`) "
strsql = strsql & "GROUP BY e.`isin`, b.`pk_id`"

关于mysql - 执行 SQL 查询,从 VBA 宏中的 Excel 表获取输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56930119/

相关文章:

vba - 对于导致类型不匹配的每个循环条件

mysql - 如何获取 ` where in statement` 中提供的非现有值作为 mysql 中的自定义提供值?

mysql - 使用 If else 条件来选择 mysql 中的列?

php - PDO 无法识别带有特殊字符的列

MySql 带条件的左外连接

excel - 如何使用 COUNT/COUNTIF 计算另一个工作表中给定范围的单元格值

mysql - 未在 3 个表连接上显示 DISTINCT 记录

sql - MySQL 数据库审计跟踪触发器

mysql - 如何使用日期时间列在一天中的某个时间后获取行

excel - 使用 PowerShell 更改 Excel 图表的轴类型