我有一张包含 A、B 和 C 列的工作表。然后我需要在我的 SQL Server 上运行查询,使用 A 列和 B 列中的值来查找应放在 C 列上的值。
我创建了如下查询:
SELECT * FROM 表名
然后根据我在 Power Query 编辑器上创建的两个参数添加了过滤步骤。
现在,我如何将现有的工作表连接到查询,并将单元格值作为参数传递以获取结果(单行)?
更新
添加更多信息...
我的工作表是这样的:
Column A | Column B | Column C
1 | 223 | ?
2 | 545 | ?
8 | 542 | ?
然后我的数据库表包含所有这 3 列(以及其他几列不重要的列),我需要将工作表中的 A 列和 B 列与数据库表中等效的 A 列和 B 列进行比较,以从数据库返回 C 列值(无需将整个表导入新工作表)。
答案1
根据我对您的问题的最佳理解,看来您已经成功创建了参数化查询,并且很可能已将?作为字段值,并且您可以通过向其传递值来检索结果。
现在您需要将单元格值引用为参数值。
尝试以下步骤。
- 选择表转到设计选项卡并转到属性
- 单击连接名称旁边的按钮。
- 转到“定义”选项卡。如果您已正确创建参数化查询,则应该为您启用参数按钮。
- 对于指定的参数,现在选择单选按钮“从以下单元格获取值”,并在单元格值改变时自动启用刷新。
- 在所有对话框中单击“确定”并退出。
现在理想情况下,每次更新 Excel 工作表单元格中的值时,查询都会运行。
请参阅以下基于 MS Access 数据库的示例。我希望 SQL Server 上的步骤也应该非常相似。请进一步探索和实验。希望这会有所帮助。
答案2
由于您尚未指定是否已连接到 MY SQL,因此我想向您展示将 Excel 文件导出到 MY Sql 的最简单过程。
按照以下步骤将 Excel 工作表数据导出到 MySQL 表。
选择数据选项卡,单击 MySQL for Excel 以打开 MySQL for Excel 任务窗格。
从“打开 MySQL 连接”中,双击现有的本地或远程连接以显示可用的数据库模式。
选择模式并单击下一步以显示所有数据库对象。
然后选择工作表中要导出的单元格,单击“将 Excel 数据导出到新表”。
现在,指定是否应将第一行用作列名。
然后键入唯一表名称,并选择用于新表的排序规则。
选择主键列。
对列应用适当的选项。
最后,单击“导出数据”以创建包含数据的新表。
另一种方法是使用 ODBC 创建 DSN。
笔记,,,这从表名中选择 *,从表中提取所有列的所有记录。
由于您在处理参数方面遇到困难,因此,为了成功查询,需要首先声明参数。
以下是一个例子。
DECLARE @Parameter VARCHAR(20)
SET @Parameter = 'Amit'
SELECT *
FROM Table
WHERE Name = @Parameter
希望这对你有帮助。
答案3
通过再次阅读我的第一个答案和 OP(您发布的问题)的评论,我意识到以下是我能向您建议的最佳答案。
方法 1:将 SQL 查询数据导出到 Excel。
查询数据时,在结果窗口中,只需单击左上角单元格即可突出显示记录,然后右键单击左上角单元格,然后单击“将结果另存为”。
您可以选择最佳的导出文件类型,即 CSV 文件。
换句话说,将 SQL 查询数据导出到 Excel。
方法2:创建查询语句导出到Excel。
INSERT INTO OPENROWSET
('Microsoft.Jet.OLEDB.4.0',
'Excel 9.0;Database=D:\Sales.xlsx;','SELECT * FROM Sales where Code = 1000')
其他的是下面写的查询直接将数据作为 CSV 文件放入 Excel 中。
SELECT * FROM Sales where Code = 1000 INTO OUTFILE 'D:/Sales.CSV' FIELDS TERMINATED BY ','
ENCLOSED BY '"' LINES TERMINATED BY '\n';
注意: 根据数据库结构更改文件、字段名称以及标准。
我相信这会对你有帮助。