2012-12-19 48 views
3

我有一个查询完全拉取数据,但有一个例外,我希望数据总和在周年纪念日重新开始。我目前的查询是;基于日期重置总和值的MS-Access 2003 SQL修改

"qry_Vac2" 
UserID Category Gain Used Left 

查询SQL;

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] 
FROM 
    SchedulingLog 
GROUP BY SchedulingLog.UserID, SchedulingLog.Category 
HAVING (((SchedulingLog.Category) Like "Vac*")); 

我的想法是在周年事件发生后重置总和的修改;

SELECT Roster.UserID, Roster.[WM DOH], Roster.Schedule, Month([WM DOH]) & "/" & Day([WM DOH]) & "/" & Year(Date()) AS [Anniversary Date], 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] 
    FROM SchedulingLog INNER JOIN Roster ON SchedulingLog.UserID = Roster.UserID 
    WHERE (((SchedulingLog.EventDate)>[Anniversary Date])) 
    GROUP BY Roster.UserID, Roster.[WM DOH], Roster.Schedule, Month([WM DOH]) & "/" & Day([WM DOH]) & "/" & Year(Date()), SchedulingLog.Category; 

修改的查询不返回任何数据。思考?

回答

2

周年日期不存在作为您可以在where语句中引用的字段。要决定要做什么,您需要发布SchedulingLog日期的格式。

schedulinglog.eventdate > Month([WM DOH]) & "/" & Day([WM DOH]) & "/" & Year(Date()) 

可能工作。

或者

schedulinglog.eventdate > DateSerial(Year(Date(),Month([WM DOH]),Day([WM DOH])) 

或者

schedulinglog.eventdate > DateAdd("yyyy",1,[WM DOH]) 
+0

有趣。它效果很好。我又一次试图让事情变得比他们需要的更困难。谢谢! –