[好,所以我有一个超级查询,它使用函数从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'
会给我“无效列”错误。为什么这样做,我该怎么做才能解决?谢谢! :)
如果完全是从'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 & "'