2016-04-25 72 views
0

我正在通过Excel查询外部数据库的电源查询。我所想要做的就是填充基于关闭单元格的值,从而例如我的SQL语句将读取类似如何构造一个包含Excel单元格值的SELECT语句?

Select * 
From employees 
where hiredate between Sheet1!A1 and Sheet2!A2 

我尝试了上面的语法,它不工作,我的where子句,但我认为这说明了什么我想实现。

如何将参数从我的Excel工作表传递到我的电源查询语法中?

编辑
我试着跟随blog.oraylis.de(不实际的链接,链接的评论),但我得到了下面的错误,当我尝试执行我的发言

DataSource.Error ODBC:Error[4203] ERROR: column "start_p" does not exist;

我创建表把它命名为参数添加的报头&价值观,以及完整的SQL我尝试运行是这样的:

let 
startp_Param = Excel.CurrentWorkbook(){[Name="Parameter"]}[Content], 
startp_Value = startp_Param {0}[Value], 
endp_Param = Excel.CurrentWorkbook(){[Name="Parameter"]}[Content], 
endp_Value = endp_Param {1}[Value], 
Source = Odbc.Query("dsn=postgresql", "Select * FROM employees where hiredate BETWEEN startp_Value AND endp_Value") 
in 
Source 

编辑#2
我改变了我的查询,阅读这样的

"Select * 
FROM employees 
where hiredate BETWEEN " & startp_Value & " AND " & endp_Value 

但是这个现在提出的一个错误:

"We cannot apply operator & to types Text and Number" 
+0

我没有时间尝试做一个例子,但这里有一些应该帮助的链接。 https://blog.oraylis.de/2013/05/using-dynamic-parameter-values-in-power-query-queries/和https://social.technet.microsoft.com/Forums/zh-CN/95dd4361 -cffb-4b12-820a-85c3d041db3e/power-query-query-with-parameter-from-a-cell?forum = powerquery –

+0

one more:http://www.excelguru.ca/blog/2014/11/26/建立一个参数表为权力查询/ –

+0

@StephenLloyd - 我试图遵循教程 - 仍然有问题。看我的编辑。 –

回答

0

startp_Value和endp_Value在电源查询步骤,所以你必须使用&添加它的字符串,像这样:

Source = Odbc.Query("dsn=postgresql", "Select * FROM employees where hiredate BETWEEN " & startp_Value & " AND " & endp_Value

这没有按” t处理消毒你的SQL查询,所以你可能想要做到这一点startp_Value和endp_Value(例如,通过转换为日期,然后回到文本)。

+0

我将如何为文本值做同样的事情。如果文本值出现错误“我们无法应用运算符&键入文本和数字” –

+0

如果startp_Value和endp_Value是数字,则需要使用'Number.ToText(startp_Value)'和'Number.ToText(endp_Value)'代替''startp_Value'和'endp_Value'。 –

相关问题