2012-07-23 21 views
2

我正在嘗試爲小公司開發基於訪問的數據庫。我做了幾張桌子,其中一些是「2011/2012總產量以美元計」和「2011/2012以CY總產量」。 所有四個表都有一列「實際產量」ms查詢人最短日期月查詢

現在,使用查詢工具,我要實現兩個目標。

  1. 獲得每月的最高和最低生產一年
  2. 顯示當實際產量爲最大/最小的月份日期

我完成了第一個任務w這很簡單;進行查詢,獲取相關字段,最後以月份形式分發。 I.e Jan Max 5000,2000年2月... 2月最大6000最小1000

現在我希望顯示月份的最大或最小生產日期。因此,如果4月份的MAX爲181,218.00,我希望它顯示發生的日期(i,e 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 

上述數據是由幾個查詢gnerated字段。

我所尋找的是

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

urgghhh ...甚至不能在這裏適當的列顯示我的問題 – Abbas 2012-07-24 13:38:22

+0

我剛剛編輯了問題Thankyou漢斯。 該查詢是從兩個表中生成的,一個以$ amount生產,另一個以Cubic Yard生產。 這些表格有一些計算字段和兩個需要用戶輸入的字段(日期和實際生產)。 (爲清楚起見,在問題中發佈的表) – Abbas 2012-07-24 14:09:31

+0

這完全是我所需要的。 抱歉的混淆。我不能夠感謝你! YOU ROCK !!! :D – Abbas 2012-07-24 19:01:31

回答

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有空該查詢將失敗(「標準表達式中數據類型不匹配」)。最簡單的方法是清除空值,然後在activity_date列中禁止它們(在表設計視圖中將Required屬性設置爲Yes)。如果您決定在activity_date必須允許空值,那麼您有更多的工作要做。

另外請注意,查詢會給你多行對同一month_year如果在日常記錄爲每月超過一個actual_production值的月最低(MinOf_production)相匹配。同樣的情況將適用於每月最高限額(MaxOf_production)。