2012-12-20 94 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