具有参数的Power Query无效列

问题描述 投票:0回答:1

[好,所以我有一个超级查询,它使用函数从Excel工作表中获取参数并输出值。它工作正常。在此特定查询中,三个参数均在WHERE部分中。

SELECT 
* 
FROM AcctHist 
WHERE FiscYr LIKE '2019' 
AND LedgerID LIKE 'Actual' 
AND CpnyID LIKE 'NAH'

如果使用硬值,则查询工作正常。如果我将参数用于FiscYr列,则可以正常工作。如果我对LedgerID或CpnyID使用参数,查询将返回“无效列”错误。在Power Query的高级编辑器中,查询如下所示:

let
Year = Text.From(fnGetParameter("Year")),
Ledger = Text.From(fnGetParameter("Ledger")),
Fund = Text.From(fnGetParameter("Fund")),
Source = Sql.Database(("Server"), ("Database"), [Query="SELECT#(tab)#(lf)#(tab)*#(lf)FROM#(tab)#(lf)#(tab)AcctHist#(lf)WHERE#(tab)#(lf)       FiscYr LIKE '2019' AND#(lf)       LedgerID LIKE 'Actual' AND#(lf)       CpnyID LIKE 'NAH'"])
in
Source

如所写,可以正常工作,并提供我需要的报告。将'2019'更改为"&Year&"输入指定的参数(在这种情况下为2019),查询仍然可以正常工作以完全相同的方式更改'Actual''NAH'会给我“无效列”错误。为什么这样做,我该怎么做才能解决?谢谢! :)

sql parameter-passing powerquery
1个回答
0
投票

如果完全是从'2019'到“&Year&”的更改,则SQL是可以的,因为它以2019为数字(因为结果没有被单个tic包围)。如果您忘记了其他值上的单个tic,查询引擎将查找名为Ledger或Fund的列。

如果此断言正确,则您的“不起作用”的where子句如下所示:

WHERE FiscYr LIKE " & Year & "
AND LedgerID LIKE " & Ledger & "
AND CpnyID LIKE " & Fund & "

但应该是

WHERE FiscYr LIKE " & Year & "
AND LedgerID LIKE '" & Ledger & "' --note the single tics just inside of the double-quotes
AND CpnyID LIKE '" & Fund & "'
© www.soinside.com 2019 - 2024. All rights reserved.