使用Ms Access计算跳过一些日期

时间:2014-09-06 18:59:26

标签: sql ms-access counting

我正在寻找计算表格中某些行的可能性。 我有一个表格,其中包含一些列:名称成本数量日期 该日期是第1个月销售日期。 有成千上万的产品。 这个表有45.000个查询

它的外观

Name      Costs  Quantity   Date
ProductA  1250   45         01/03/2011
ProductA  1250   23         01/06/2011
ProductB  750    31         01/02/2011
ProductB  750    45         01/09/2011
ProductB  750    21         01/12/2011
ProductB  750    45         01/01/2012
ProductB  750    37         01/03/2012
ProductB  750    25         01/06/2013
ProductB  750    11         01/07/2014
ProductB  750    15         01/09/2014

我想构建能够计算日期并在销售的第一个月后继续计数的查询,下一个计数将计算不可见的信息,并且仅显示一些指定信息的计数周期。

我将为此专栏命名,例如" Month Live"

在这样的查询/问题之后看起来像那样

Name      Costs  Quantity   Date         Month Live
ProductA  1250   45         01/03/2011   1
ProductA  1250   23         01/06/2011   4
ProductB  750    31         01/02/2011   1
ProductB  750    45         01/09/2011   8
ProductB  750    21         01/12/2011   11
ProductB  750    45         01/01/2012   12
ProductB  750    37         01/03/2012   14
ProductB  750    25         01/06/2013   29
ProductB  750    11         01/07/2014   41
ProductB  750    15         01/09/2014   43

如何执行以获得此结果?

1 个答案:

答案 0 :(得分:0)

我要做出假设:

  • 该表名为ProductCosts
  • 月份计数仅与产品相关,而不是产品+成本(因为样本数据中不同日期的产品不会显示不同的成本,因此这一点不明确)。如果不是这样的话,我建议的代码可以很容易地调整。
  • 您还没有正确计算样本输出中最后两行的月数

考虑到所有......

SELECT t.Name, t.Costs, t.Quantity, t.Date, DateDiff("m", s.FirstDate, t.Date) + 1 AS MonthLive
FROM ProductCosts t
    INNER JOIN (
        SELECT m.Name, MIN(m.Date) AS FirstDate
        FROM ProductCosts m
        GROUP BY m.Name) s
    ON t.Name = s.Name
ORDER BY t.Name, t.Date