2

小さな会社向けにアクセスベースのデータベースを開発しようとしています。私はいくつかの表を作成しました. それらのいくつかは、「2011/2012 総生産量 ($)」と「2011/2012 総生産量 (CY)」です.4 つの表すべてに「実際の生産量」の列があります.

今、クエリ ツールを使用して、2 つの目的を達成する必要があります。

  1. 1 年間の各月の最大生産量と最小生産量を取得する
  2. 月間実績生産量が最大・最小となった日付を表示

簡単な最初のタスクを完了しました。クエリを作成し、関連するフィールドを取得し、最大値と最小値をまとめて、最後に月単位で分配します。つまり、1 月最大 5000、最小 2000...2 月 最大 6000 最小 1000

今私が望むのは、その月の最大生産日または最小生産日を表示することです。したがって、4 月の月に MAX 181,218.00 があった場合、それが発生した日付 (つまり、2012 年 4 月 10 日) を表示する必要があります。

私はアクセスの初心者なので、できるだけ簡単にお願いします。

コメントから収集されたサンプルデータ:

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

など。

クエリを使用してこの結果を生成することは可能ですか?

ありがとう!

コメントとの関係。

テーブルの 1 つの関連フィールドは次のとおりです。

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

1 に答える 1

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

という名前のクエリの SQL を次に示しますqryMonthStart。このクエリの目的は、 を含む月の最初の日を特定すること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;

に Null がある場合、クエリが失敗することに注意してください (「条件式のデータ型の不一致」) activity_date。これを防ぐ最も簡単な方法は、Null を消去してから列で禁止することですactivity_date(テーブル デザイン ビューで Required プロパティを Yes に設定します)。で Null を許可する必要があると判断した場合はactivity_date、さらに作業が必要です。

また、その月の複数の日次レコードの値が月次最小値 ( ) と一致するmonth_year場合、クエリは同じものに対して複数の行を提供することに注意してください。また、月額上限()についても同様です。actual_productionMinOf_productionMaxOf_production

于 2012-07-24T16:23:44.707 に答える