2013-01-04 44 views
0

我们有一个电子表格,其中包含10,000个客户ID列表。Excel 2010 - 按电子表格筛选数据库查询

我们也有,有一个客户表,包含2000万个客户的SQL Server 2008 R2数据库,包括了如客户ID,名字,电子邮件等

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

我不想带回从数据库中的所有2000万点的记录,然后筛选了10,000名客户,因为这将是对DB太征税(返回2000万行)。

我试着去寻找应用DB查询中筛选器谓词中做这样的事情的一种方式:

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>),因为有10000个客户ID(整数),并且似乎对单个SQL语句中可以具有的字符数量有限制。

我有PowerPivot,但无法找到办法做到这一点,而无需首先带回20家客户。

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

是否有任何工具可以做到这一点?

+0

它看起来老了,但这里的(http://www.techrepublic.com/article/solutionbase-making-excel-and-sql-server [设立从Excel到SQL Server数据库的ODBC连接的HOWTO] -talk到每个-其他/ 5165764)。然后,您可以根据需要从Excel中进行查询。 –

+0

谢谢,我可以从Excel连接到数据库没有问题。问题在于构建数据库查询以将现有电子表格中的值用作过滤器。 – shakedown7

+1

您可以将Excel客户ID上载到数据库中的临时表,然后使用临时表上的内部联接在客户表上构建一个查询?你可以使用VBA/ADO自动上传 - 并为非技术用户提供一个按钮来触发上传或整体更新... –

回答

0

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

+0

我无法在查询中执行WHERE CUSTOMER_ID IN(<逗号分隔customer_ids>),因为有10,000个客户ID(整数),并且似乎对单个字符数量有限制SQL语句。 – shakedown7

+0

对不起,我注意到你有Integer值,这就是为什么我认为链接将帮助他们使用单元格引用作为文本字符串示例('“&A1&”')或(Range(“B4”)) 。认为这会削减字符限制,因为你不使用实际的单元ID号码。对不起,它没有帮助,找到解决方案最好。 –

相关问题