在我的查询中,我使用IIF
函数使用BeforeOrAfter
将“之前”或“之后”分配给名为AS
的字段。
但是,当我运行此查询时,会出现“输入参数值”对话框,请求BeforeOrAfter
的值。如果我从BeforeOrAfter DESC
子句中删除ORDER BY
,我就不会收到对话框。
以下是违规查询:
SELECT
d.Scenario,
e.Event,
IIF(d.LogTime < e.Time, 'Before','After') AS BeforeOrAfter,
d.HeartRate
FROM
Data d INNER JOIN
Events e ON d.Scenario = e.Scenario
WHERE
e.Include = Yes
ORDER BY
d.Scenario,
e.Id,
BeforeOrAfter DESC
问题:为什么我的AS BeforeOrAfter
无法被ORDER BY
条款识别?为什么我在运行此查询时要求我输入“BeforeOrAfter”的参数值?
注意:我尝试使用括号,单引号,双引号等,但这些都没有任何区别。
答案 0 :(得分:5)
我相信Access无法处理别名功能,因此您必须将IIF块复制到Order By -clause中。或者创建一个子查询(如果你的Access版本不是最新的两个左右,你甚至可能发现自己甚至不能使用parantheses。)