我正在尝试为小公司开发基于访问的数据库。我制作了几张桌子,其中一些是“2011/2012年度总产量”和“2011/2012总产量”。 所有四个表都有一列“实际生产”
现在,使用查询工具,我必须实现两个目标。
我完成了第一个简单的任务;进行查询,获取相关字段,摘要Max&最后,最后在一个月内明智地分发。 I.e Jan Max 5000,Min 2000 ... Feb Max 6000 Min 1000
现在我想要的是显示当月的最大或最小生产日期。因此,如果4月份当月的最大值为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
以上数据是查询产生的几个字段。
我正在寻找的是
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
答案 0 :(得分:0)
我迷失了你的问题的细节。因此,我将向您展示示例数据和查询,以获得我希望您从该数据中获得的内容。
以下是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,那么您还有更多的工作要做。
另请注意,如果该月的多个每日记录中的month_year
值与每月最小值(actual_production
)匹配,则查询将为同一MinOf_production
提供多行。同样的情况将适用于每月最高值(MaxOf_production
)。