2010-03-18 2 views
3

В моем запросе я использую функцию IIF, чтобы назначить «Before» или «After» в поле с именем BeforeOrAfter с использованием AS.Почему я получаю «Введите значение параметра» при запуске моего запроса MS Access?

Однако, когда я запускаю этот запрос, появляется диалоговое окно «Введите значение параметра», запрашивающее значение для 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

Не могли бы вы указать, какую версию Access вы используете? –

ответ

5

I beleive Access не может обрабатывать функцию псевдонима, поэтому вам придется скопировать ваш IIF-блок в Order By -clause. Или создайте подзапрос (и тогда вы даже можете заставить себя даже не использовать скобки, если ваша версия Access не входит в число последних двух или около того).

+1

ВЫБОР d.Scenario, e.Event, ИМФ (d.LogTime clyc

+0

Спасибо, Саймон. Это первый раз, когда я писал запросы в Access. Я быстро узнаю, что он совсем не похож на SQL Server. – devuxer

+0

Почему вы не ожидаете, что у другого механизма базы данных будет другой диалект SQL? Для чего вы можете найти что-то еще проще, если вы установите Access для использования режима «SQL 92», который изменяет несколько вещей, совместимых с SQL-диалектом SQL Server (подстановочные знаки LIKE и синтаксис для производных таблиц являются единственными о которых я могу думать). –

Смежные вопросы