2013-01-22 37 views
1

我需要獲取今年在訪問數據庫中使用SQL所行駛的總里程數。 此刻我想下面的查詢,但它不工作:獲取當年總計 - SQL

SELECT 
     SUM(Mileage) 
    FROM 
     [Mileage-Expenses] 
    WHERE 
     YEAR(DatePurchased) = YEAR(CURRENT_TIMESTAMP) 

任何想法如何解決這一問題?

+4

*不工作*是無效的錯誤信息 - 甚至在MS Access中也沒有。 –

+0

你有什麼錯誤? – Matt

+0

IErrorInfo.GetDescription失敗,E_FAIL(0x80004005) – JD88

回答

3

A WHERE基於YEAR(DatePurchased)的子句要求db引擎評估表中表中每行的表達式。通過在DatePurchased上添加一個索引(如果還沒有的話),然後使用WHERE子句,它允許數據庫引擎在計算SUM(Mileage)之前僅檢索當年的行,可以獲得更好的性能。

SELECT 
    SUM(Mileage) 
FROM 
    [Mileage-Expenses] 
WHERE 
     DatePurchased >= DateSerial(Year(Date()), 1, 1) 
    AND DatePurchased < DateSerial(Year(Date()) + 1, 1, 1) 
+0

謝謝!這工作完美! – JD88