【问题标题】:Calculating last 8 weeks (summarized data) in Access 2007在 Access 2007 中计算过去 8 周(汇总数据)
【发布时间】:2016-01-01 13:32:54
【问题描述】:

我尝试了许多不同的方法来解决它,但仍然卡住了。我可以使用以下 SQL 计算过去 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 周随着数据进入主表而滚动。

有什么提示或建议吗?

【问题讨论】:

    标签: sql vba ms-access ms-access-2007


    【解决方案1】:

    你不应该需要日期序列

    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;
    

    【讨论】:

      【解决方案2】:

      首先,您应该使用常规的 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] ;
      

      【讨论】:

      • 如果它对你有用,请考虑支持我的回答。谢谢。
      猜你喜欢
      • 1970-01-01
      • 2017-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多