【问题标题】:Excel 2010 - Database Query Filtered by SpreadsheetExcel 2010 - 按电子表格过滤的数据库查询
【发布时间】:2013-01-04 13:25:48
【问题描述】:

我们有一个包含 10,000 个客户 ID 列表的电子表格。

我们还有一个 SQL Server 2008R2 数据库,它有一个客户表,包含 20,000,000 个客户,并包括客户 ID、名字、电子邮件等属性。

最好在 Excel 中,我想查询数据库并在我的电子表格中获取 10,000 个客户的名字和电子邮件。

我不想从数据库中取回所有 20,000,000 条记录,然后筛选出 10,000 名客户,因为这对数据库来说过于繁重(返回 20,000,000 行)。

我试图找到一种在数据库查询中应用过滤谓词的方法来执行以下操作:

SELECT first_name, email 
FROM customers
WHERE customer_id IN (
SELECT customer_id FROM [Excel Spreadsheet]
)

我不能在查询中使用WHERE CUSTOMER_ID IN ( <comma seperated list of customer_ids> ),因为有 10,000 个客户 ID(整数),而且单个 SQL 语句中的字符数似乎有限制。

我有 PowerPivot,但如果不先带回 20 家工厂客户,就找不到办法。

我不想使用 VBA - 该解决方案需要对非技术最终用户可行。

有什么工具可以做到这一点吗?

【问题讨论】:

  • 它看起来很旧,但这里是a howto for setting up an ODBC connection from Excel to a SQL Server database。然后,您可以根据需要从 Excel 中查询。
  • 谢谢,我可以从 Excel 连接到数据库没问题。问题在于构建数据库查询以使用现有电子表格中的值作为过滤器。
  • 您能否将 Excel 客户 ID 上传到数据库中的临时表,然后在客户表上构建查询,并在该临时表上进行内部连接?您可以使用 VBA/ADO 自动上传 - 并为非技术用户提供一个按钮来触发上传或整体更新...
  • 这可行,但远非理想...也许 Excel 不是适合这项工作的工具。我发现在 MS Access 中可以做到这一点,您可以在其中创建一个指向 Excel 电子表格的链接表,以及一个指向 SQL Server DB 表的链接表,然后您可以在查询中加入这两者。尽管从运行数据库跟踪来看,它看起来仍然将整个数据库表拉到客户端,然后将其与客户端的电子表格合并。

标签: sql sql-server excel business-intelligence


【解决方案1】:

对不起,我是新手(您想听到的最后一件事),但我当前的项目是相似的,因为我将 Excel 连接到我的数据库并使用 SQL 调用特定查询以加载到我的 Excel 工作表中。有一个论坛的链接已经对此提出质疑。 http://community.spiceworks.com/topic/215327-using-column-data-from-excel-to-use-in-a-sql-query-statement希望这与您相关,因为他们提供的答案根本不使用 VBA,而且看起来很简单。

【讨论】:

  • 我不能在查询中执行 WHERE CUSTOMER_ID IN ( ),因为有 10,000 个客户 ID(整数),并且似乎有数量限制单个 SQL 语句中可以包含的字符。
  • 对不起,我确实注意到你有整数值,这就是为什么我认为链接会有所帮助,因为他们使用单元格引用作为文本字符串示例 ('" & A1 & "') 或 (Range( “B4”)。值)。认为这会减少字符限制,因为您不使用实际的单元格 ID 号。很抱歉,它没有帮助,祝您找到解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-09
  • 2015-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-09
相关资源
最近更新 更多