2010-03-18 80 views
3

在我的查詢中,我使用IIF函數使用AS將「之前」或「之後」分配給名爲BeforeOrAfter的字段。運行我的MS Access查詢時,爲什麼會收到「輸入參數值」?

但是,當我運行此查詢時,將出現「輸入參數值」對話框,請求值爲BeforeOrAfter。如果我從ORDER BY子句刪除BeforeOrAfter DESC,我沒有得到對話框。

這裏是有問題的查詢:

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版本嗎? – 2010-03-18 19:30:18

回答

5

我相信訪問無法處理別名功能,因此您必須將您的IIF模塊複製到Order By條款中。或者創建一個子查詢(如果您的Access版本不在最新的兩個版本中,您甚至可能會發現自己被迫甚至無法使用偏食)。

+1

SELECT d.Scenario, e.Event, IIF(d.LogTime clyc 2010-03-18 19:31:57

+0

謝謝,西蒙。這是我第一次在Access中編寫查詢。我很快就知道它與SQL Server完全不同。 – devuxer 2010-03-18 20:09:59

+0

爲什麼你不希望一個不同的數據庫引擎有不同的SQL方言?對於它的價值,如果您將Access設置爲使用「SQL 92」模式,則可能會更容易一些,這會改變一些與SQL Server的SQL方言兼容的事情(LIKE通配符和派生表的語法是唯一的我能想到的那些)。 – 2010-03-18 21:42:34