2015-10-04 59 views
0

我尝试了许多不同的方法来解决这个问题,但我仍然陷入困境。我可以通过使用下面的SQL来计算过去的8周(工作日):在Access 2007中计算最近8周(汇总数据)

SELECT [Returns Data].[Returns] 
, [Returns Data].[Return Reason] 
, Count([ Returns Data].[Account]) AS [CountOf Account] 
, Sum([Returns Data].Amount) AS SumOfAmount 
FROM [Returns Data] 
GROUP BY [Returns Data].[Returned in System] 
, [Returns Data].[Return Reason] 
HAVING ((([Returns Data].[Returned in System]) 
    Between (DateSerial(Year(Date()),Month(Date()),-39)) And Date())); 

我的猜测是操纵日期序列让它持续8个本周总结。理想情况下,我希望在过去的8周内数据被放入主表中。

任何提示或建议?

回答

0

你不应该需要时间序列

SELECT [Returns Data].[Returns], [Returns Data].[Return Reason], 
    Count([ Returns Data].[Account]) AS [CountOf Account], 
    Sum([Returns Data].Amount) AS SumOfAmount 
FROM [Returns Data] 
GROUP BY [Returns Data].[Returned in System], [Returns Data].[Return Reason] 
HAVING [Returns Data].[Returned in System] BETWEEN Date() AND Date()-39; 
0

首先,你应该使用常规的where子句,不having子句。我要根据你的计数或总和来筛选,然后你会使用having子句。在这种情况下,一个常规的where子句可以做得很好。

其次,你要找的是dateadd函数,而不是dateserial。

东西沿着这些线路可能会解决您的问题:

SELECT [Returns Data].[Returns] 
, [Returns Data].[Return Reason] 
, Count([ Returns Data].[Account]) AS [CountOf Account] 
, Sum([Returns Data].Amount) AS SumOfAmount 
FROM [Returns Data] 
WHERE ([Returns Data].[Returned in System] BETWEEN 
DateDiff("ww", -38, Date()) AND Date()) 
GROUP BY [Returns Data].[Returned in System] 
, [Returns Data].[Return Reason] ; 
+0

那精美的作品。谢谢! –

+0

如果它适合你,请考虑加我的答案。谢谢。 –