2009-08-06 46 views

回答

12

參考表達,而不是別名。

SELECT ID, datediff("mi", Start, [End]) as Total 
FROM TimeTable 
WHERE datediff("mi", Start, [End]) is not null 

編輯,更新,以避免語法錯誤END

+1

and wrap End in [] – Sk93 2009-08-06 16:16:09

+0

大聲笑,這正是我的解析器剛剛說的。 – cmsjr 2009-08-06 16:17:46

+1

在where子句之前,邏輯地處理select子句。在處理select子句之前,別名不可用。 (幾乎?)除ORDER BY之外的所有子句都在select子句之前處理。按順序可以使用別名,因爲它是在select子句之後處理的。 – 2009-08-06 19:58:50

1

的使用不要使用像「結束」保留字作爲表或者列名!使用類似TaskStart/TaskEnd或JobStart/JobEnd或StartDate/EndDate的東西,每次你不必回頭在你的表格/列名稱周圍添加[]時,都會感謝我......

+0

這僅僅是一個例子的名稱.. – agnieszka 2009-08-06 16:42:24

+1

不是一個真正的答案。作爲評論會更好。 – Nick 2013-01-09 10:07:24

+0

@尼克,感謝您的反對!通過遵循我的回答'不要使用像「End」這樣的保留字作爲表或列名稱,OP的錯誤「Invalid column name」將被解決。幾乎沒有投票權,我的答案在技術上是錯誤的?請參閱:http://stackoverflow.com/privileges/vote-down – 2013-01-09 13:25:11