如何使用Power Query使用参数化SQL查询的结果设置单元格值?


2

我有一个包含A,B和C列的工作表。然后,我需要使用A和B列中的值在SQL Server上运行查询,以查找应放在C列中的值。

我创建了这样的查询:

SELECT * FROM表名

然后添加考虑我在Power Query Editor上创建的两个参数的过滤步骤。

现在,如何将现有工作表连接到查询,将单元格值作为参数传递以获得结果(单行)?

UPDATE

添加更多信息...

我的工作表是这样的:

Column A | Column B | Column C
   1     |  223     |    ?
   2     |  545     |    ?
   8     |  542     |    ? 

然后,我的数据库表具有所有这3列(以及不重要​​的其他几列),我需要将工作表中的A列和B列与数据库表中的A列和B列进行比较,以从数据库(不将整个表导入到新工作表中)。

Answers:


1

根据我对您的问题的最深刻理解,您似乎已经成功创建了一个参数化查询,并且很可能已经输入了?字段值,您可以通过将值传递给它来检索结果。

现在,您需要将单元格值称为参数值。

尝试这些步骤。

  1. 选择表转到设计选项卡,然后转到属性
  2. 单击连接名称旁边的按钮。 在此处输入图片说明
  3. 转到“定义”选项卡。如果正确创建了参数化查询,则应为您启用“参数按钮”。
  4. 对于指定的参数,现在选择单选按钮“从以下单元格获取值”,并在单元格值更改时自动启用“刷新”。 在此处输入图片说明
  5. 在所有对话框上单击确定,然后退出。

现在,理想情况下,每次您更新Excel工作表单元格中的值时,查询都将运行。

请参见以下基于MS Access数据库的示例。我希望这些步骤在SQL Server上也应该非常相似。做进一步的探索和实验。希望这可以帮助。

在此处输入图片说明

在此处输入图片说明


几乎在那里,@ pat2015。问题是我的工作表的A和B列有几行,因此我不能在参数值中使用固定的行。
朱利安诺·尼斯·席尔瓦·奥利维拉

@ JulianoNunesSilvaOliveira,Pat建议访问查询,但是您已经编写了SQL Server,!!
Rajesh S

你说得对@RajeshS。我没有看到他正在使用Access。
朱利安诺·内尼斯·席尔瓦·奥利维拉

0

由于尚未指定是否连接到MY SQL,因此,我想向您展示将Excel文件导出到MY Sql的最简单过程。

请按照以下步骤将Excel工作表数据导出到MySQL表。

  1. 选择数据选项卡,单击MySQL for Excel打开MySQL for Excel任务窗格。

  2. 在“打开MySQL连接”中,双击现有的本地或远程连接以显示可用的数据库模式。

  3. 选择模式并单击下一步以显示所有数据库对象。

  4. 然后在要导出的工作表中选择单元格,单击“将Excel数据导出到新表”。

  5. 现在,指定是否应将“第一行”用作列名。

  6. 然后键入“唯一表名称”,然后选择用于新表的排序规则。

  7. 选择主键列。

  8. 将适当的选项应用于列。

  9. 最后,单击“导出数据”以创建包含数据的新表。

其他方法是使用ODBC创建DSN。

请注意Select * from TableName从表中为所有列提取所有记录。

由于您在使用参数方面苦苦挣扎,因此对于成功的查询,它需要首先声明参数。

这是一个例子。

DECLARE @Parameter VARCHAR(20)
SET @Parameter = 'Amit'

SELECT *
FROM Table
WHERE Name = @Parameter

希望这对您有所帮助。


那不是我所需要的。我不想将工作表的数据导入到SQL Server数据库中,我需要查询数据库表以将一些数据添加到我的工作表中,但要使用工作表中的现有数据作为参数。列A和B包含参数值,并且列C必须使用SQL Server查询的结果进行更新。
朱利安诺·内尼斯·席尔瓦·奥利维拉

@JulianoNunesSilvaOliveira,实际上我建议了两种不同的方法。首先是将Excel Sheet导出到SQL Server以进行进一步的操作,其次是如何在查询时创建参数。但是您的问题有所不同。实际上,您希望将查询的数据从SQL Server插入EXCEL。这只是简单地导出到EXCEL。
Rajesh S

检查我最近的答案,我建议了两种方法,一种是导出到Excel,第二种是如何将查询到的数据作为CSV文件插入Excel工作表。
Rajesh S

抱歉,如果我的设置不正确,但是无法为参数设置一个固定值,则需要使用现有工作表的每一行进行查询,并更新相应行的C列。
朱利安诺·内尼斯·席尔瓦·奥利维拉

@JulianoNunesSilvaOliveira,您是否尝试过我最近的解决方案,我昨天才发布!
Rajesh S

0

在再次阅读关于“第一答案”和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';

注意: 根据您的数据库结构,更改文件,字段名称以及条件。

我相信这会对您有所帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.