ms 查询 man min date 月份查询

Posted

技术标签:

【中文标题】ms 查询 man min date 月份查询【英文标题】:ms query man min date month query 【发布时间】:2012-07-23 21:08:09 【问题描述】:

我正在尝试为一家小公司开发基于访问权限的数据库。我制作了几张表格,其中一些是“2011/2012 年总产量(美元)”和““2011/2012 年总产量(CY)”。 所有四个表都有一个“实际生产”列

现在,使用查询工具,我必须实现两个目标。

    获取一年中每个月的最大和最小产量 显示当月实际产量最大/最小的日期

我已经完成了第一个简单的任务;进行查询,获取相关字段,汇总最大值和最小值,最后按月分发。即一月最大 5000,最小 2000...二月最大 6000 最小 1000

现在我想要显示该月的最大或最小生产日期。因此,如果 4 月的月份有 MAX 181,218.00,我希望它显示它发生的日期(即 2012 年 4 月 10 日)

我是 Access 的初学者,所以请尽可能简单。

从评论中收集的示例数据:

Month         Sum of Prod   Min Prod in $ Max Prod in $
------------- ------------- ------------- -------------
January 2011  $1,184,096.98    $20,486.40   $171,470.40
February 2011 $1,558,072.20    $44,962.20   $116,359.20
March 2011    $1,744,442.19    $19,200.00   $141,065.10
April 2011    $1,698,608.63    $27,500.70   $181,218.00
May 2011      $1,826,915.38    $37,996.00   $130,066.00
June 2011     $2,317,890.71    $42,645.00   $144,323.30

以上数据是Query生成的少数字段。

我要找的是

Month         Date of Min Prod Min Prod in $ Date of Max Prod  Max Prod in $
------------- ------------- ------------- -------------     -------------
January 2011     Jan 15        $20,486.40     Jan 10         $171,470.40
February 2011    Feb 20        $44,962.20     Feb 27         $116,359.20
March 2011      March 10       $19,200.00     March 1        $141,065.10

等等。

是否可以使用查询来生成此结果?

谢谢!

与评论的关系。

其中一张表中的相关字段是。

Date of Activity Actual Production  
-------------   ------------- -------
1/3/2012              $20,486.40    
1/4/2012              $44,962.20    
1/5/2012              $19,200.00    

【问题讨论】:

urgghhh...甚至不能在这里做适当的列来显示我的问题 我刚刚编辑了问题Thankyou Hans。该查询是从两个表中生成的,一个以 $ 为单位提供生产,另一个以 Cubic Yard 为单位。这些表有一些计算字段和两个需要用户输入的字段(日期和实际生产)。 (为了清楚起见,在问题中张贴了表格) 这正是我所需要的。对困惑感到抱歉。我不能感谢你!你摇滚!!! :D 在我删除它之前,我没有意识到你看到了这个答案。我这样做是因为我意识到如果每日数据的多行中的实际生产值与每月最小值匹配,它可能会在一个月内给出多行;每月最高限额相同。但是,由于它实际上对您有用,因此我将取消删除该答案。 【参考方案1】:

我迷失了你问题的细节。因此,我将向您展示示例数据和查询,以便从这些数据中获得我希望您想要的东西。

这是tblAbbas的内容。

activity_date actual_production
1/3/2012             $20,486.40
1/4/2012             $44,962.20
1/5/2012             $19,200.00
2/1/2012                  $3.00
2/2/2012                  $2.00
2/3/2012                  $1.00

这是名为qryMonthStart 的查询的SQL。此查询的目的是确定包含activity_date 的月份的第一天。

SELECT
    DateSerial(Year(activity_date),Month(activity_date),1)
        AS month_start,
    activity_date,
    actual_production
FROM tblAbbas;

下面的查询使用qryMonthStart 作为它的数据源并给了我这个结果集。

month_year    SumOf_production min_prod_date MinOf_production max_prod_date MaxOf_production
January 2012        $84,648.60      1/5/2012       $19,200.00      1/4/2012       $44,962.20
February 2012            $6.00      2/3/2012            $1.00      2/1/2012            $3.00

还有查询 SQL ...

SELECT
    Format(grpby.month_start,"mmmm yyyy") AS month_year,
    grpby.SumOf_production,
    qmin.activity_date AS min_prod_date,
    grpby.MinOf_production,
    qmax.activity_date AS max_prod_date,
    grpby.MaxOf_production
FROM
    (
    (
        SELECT
            month_start,
            Sum(actual_production) AS SumOf_production,
            Min(actual_production) AS MinOf_production,
            Max(actual_production) AS MaxOf_production
        FROM qryMonthStart
        GROUP BY month_start
    ) AS grpby
    INNER JOIN qryMonthStart AS qmin
    ON
            (grpby.MinOf_production = qmin.actual_production)
        AND (grpby.month_start = qmin.month_start)
    )
    INNER JOIN qryMonthStart AS qmax
    ON
            (grpby.MaxOf_production = qmax.actual_production)
        AND (grpby.month_start = qmax.month_start)
ORDER BY grpby.month_start;

请注意,如果 activity_date 为 Null,则查询将失败(“条件表达式中的数据类型不匹配”)。防止这种情况发生的最简单方法是清除 Null,然后在 activity_date 列中禁止它们(在表设计视图中将 Required 属性设置为 Yes)。如果您决定必须在 activity_date 中允许 Null,那么您还有更多工作要做。

另请注意,如果该月的多个每日记录中的 actual_production 值与每月最小值 (MinOf_production) 匹配,则查询将为相同的 month_year 提供多行。同样的情况也适用于每月最高限额 (MaxOf_production)。

【讨论】:

以上是关于ms 查询 man min date 月份查询的主要内容,如果未能解决你的问题,请参考以下文章

sql 查询中 有12个月表 写一个查询从中提取所有日期

查询每个用户指定月份最后一天的收益

sql查询指定月份之前的几个月

Oracle sql developer 日期/月份数据提取查询和语法

linq to sql 查询两者之间的语句怎么写,例如7月份到8月份的数据

休眠查询日期仅比较月份