2012-12-20 95 views
0

我有一個查詢可以獲取假期摘要信息。我想限制結果大於當前週年日期。當我只用週年紀念表達式查詢週年表達時,工作正常。當我放入Where子句時,它會提示Anniversary。除了Where子句執行exp [ression並提供Anniversary日期。MS-Access 2003基於表達式限制查詢結果

SELECT SchedulingLog.UserID, SchedulingLog.Category, Sum(IIf([CatDetail] Like 'Ann*',[Value],0)) AS Gain, Sum(IIf([CatDetail] Like '*Used*',[Value],0))+Sum(IIf([CatDetail] Like 'Adj*',[Value],0)) AS Used, [Gain]+[Used] AS [Left], Month([WM DOH]) & "/" & Day([WM DOH]) & "/" & Year(Date()) AS Anniversary 
FROM SchedulingLog INNER JOIN Roster ON SchedulingLog.UserID = Roster.UserID 
WHERE (((SchedulingLog.EventDate)>=[Anniversary])) 
GROUP BY SchedulingLog.UserID, SchedulingLog.Category, Month([WM DOH]) & "/" & Day([WM DOH]) & "/" & Year(Date()) 
HAVING (((SchedulingLog.Category) Like "Vac*")); 

我在尋找的是一種方法來限制總和值在表達式週年之後的事件日期。

基於Remous的耐心與我的SQL缺乏經驗和指導。我開始看到光明。所以,當我把

DateAdd("yyyy",1,[WM DOH]) 
it returns the individuals date of Hire and the year advances by 1. 
ex. employee DOH 12-25-2003 
The expression returns 12-25-2004 

我調整DATEADD到這樣的事情

DateAdd("yyyy",Year(Date())-1,[WM DOH]) 
This returns something completely wrong. but illustrates what I am trying to accomplish 
desired result ex. 12-25-2011 

的思考?

回答

2

同樣的故事。週年紀念不是你可以在where子句中引用的字段,它是一個別名。

WHERE SchedulingLog.EventDate>= 
    DateSerial(Year(Date())-1,Month([WM DOH]) ,Day([WM DOH])) 
+0

Remou,我非常感謝您對我有限的SQL能力所做出的貢獻,以及因爲我正在引導我走向正確的道路,但我的結果並不完全在那裏。我已修改原始帖子以顯示下一步。 –

+0

編輯到日期序列號 – Fionnuala

+0

根據http://stackoverflow.com/questions/13952164/ms-access-2003-sql-modification-for-resetting-sum-values-based-on-a-date – Fionnuala