本文說明如何使用頂端值查詢來尋找一組記錄中的最近或最早日期。 您可以使用此查詢類型所返回的資訊來回答各種商務問題,例如客戶最後下單時間。

您想要做什麼?

瞭解頂端值查詢如何與日期一起使用

當您需要尋找包含資料表或記錄群組中最新或最早日期的記錄時,可以使用頂端值查詢。 接著,您可以使用資料回答數種類型的商務問題,例如:

  • 員工最後一次銷售是何時? 答案可協助找出生產力最高或生產力最低的員工。

  • 客戶最後一次下訂單是何時? 如果客戶有一段時間沒有下訂單,您可能會想要將客戶移至非使用中清單。

  • 誰有下一個生日,或下一個 n 個生日?

建立及使用頂端值查詢的規則

您先建立選取查詢,以建立頂端值查詢。 視您想要的結果,您可以將排序次序或將查詢轉換為合計查詢。 如果您轉換查詢,則使用匯總函數 ,例如MaxMin,以返回最高或最低的值,或使用First 或Last來返回最早或最新的日期。 只有在您需要尋找屬於一組群組或類別的資料時,才使用合計查詢和匯總函數。 例如,假設您需要尋找貴公司所經營之每個縣/市之給定日期的銷售數位。 在這種情況下,城市會變成類別 (您需要尋找每個城市/) 的資料,因此您可以使用合計查詢。

請記得,繼續進行時,無論查詢類型如何,查詢都必須使用包含描述資料的欄位,例如客戶名稱,以及包含您想要尋找之日期值的欄位。 此外,日期值必須位於設定為日期/時間資料類型的欄位中。 如果您嘗試對文字欄位中的日期值執行查詢,本文說明的查詢會失敗。 此外,如果您想要使用合計查詢,您的資料欄位必須包含類別資訊,例如城市或國家/地區欄位。

在頂端值查詢和篩選之間選擇

若要判斷是否應該建立頂端值查詢或進行篩選,請選擇下列其中一項:

  • 如果您想要在欄位中以最新的或最新的日期來退貨記錄,而且不知道確切的日期值,或者這些值都不重要,您可以建立頂端值查詢。

  • 如果您想要將日期符合、晚于或晚于特定日期的所有記錄都退回,請使用篩選。 例如,若要查看 4 月到 7 月之間的銷售日期,請進行篩選。 本主題無法完整探討篩選。

    有關建立及使用篩選的資訊,請參閱在 Access 資料庫中使用篩選來 查看選取的記錄一文

頁面頂端

尋找最新或最早日期

本節中的步驟說明如何建立使用排序次序的基本頂端值查詢,以及使用運算式和其他準則的進一步查詢。 第一節示範建立頂端值查詢的基本步驟,第二節說明如何新增準則來尋找接下來幾個員工的生日。 步驟會使用下列範例資料表中的資料。

姓氏

名字

地址

城市

國家/地區

出生日期

雇用日期

孫哲翰

沙東

1 Main St.

New York

Taiwan

1968 年 2 月 5 日

10-Jun-1994

Heloo

Waleed

52 1st St.

Boston

Taiwan

1957 年 5 月 22 日

22-Nov-1996

盧珮佳

Guido

3122 75th Ave. S.W.

Seattle

Taiwan

11-Nov-1960

11-Mar-2000

百 吉 餅

周立嬛

1 Contoso Blvd.

London

UK

22-Mar-1964

22-Jun-1998

Price

朱利安

Calle Smith 2

Mexico City

墨西哥

05-Jun-1972

05-Jan-2002

休斯

克莉 絲 汀

3122 75th St. S.

Seattle

Taiwan

23-Jan-1970

1999 年 4 月 23 日

萊利

史蒂夫

67 Big St.

Tampa

Taiwan

14-Apr-1964

2004 年 10 月 14 日

Kby

丹娜

2 Nosey Pkwy

Portland

Taiwan

1959 年 10 月 29 日

29-Mar-1997

您可以視需要手動將此範例資料輸入新資料表,或將這個範例資料表複製到試算表程式 ,例如 Microsoft Excel,然後使用 Access 將產生的工作表匯出至資料表。

建立基本頂端值查詢

  1. 在 [建立] 索引標籤上,按一下 [查詢] 群組中的 [查詢設計]。

  2. 在對話方塊中,按一下要用於查詢的資料表,按一下 [ 新增以將資料表放在設計工具的上方區段,然後按一下 [關閉

    -或-

    按兩下表格,然後按一下 [關閉

    如果您使用上一節列出的範例資料,請新增員工資料表至查詢。

  3. 將您想要用於查詢的欄位新增到設計格線線。 您可以按兩下每個欄位,或將每個欄位拖放至 [欄位列> 的空白 儲存格 上。

    如果您使用範例資料表,請新增名字、姓氏和出生日期欄位。

  4. 在 [生日 (欄位包含您頂端或底端值的欄位中,如果您使用範例資料表) ,請按一下 [排序列,然後選取遞增或遞減

    遞減排序次序會返回最新的日期,而遞增排序次序會回回最早日期。

    重要: 您必須只在包含日期的欄位的排序列設定值。 如果您為另一個欄位指定排序次序,查詢不會返回您想要的結果。

  5. [設計索引鍵的查詢設定群組中,按一下 [所有值 (頂端值清單) 旁的向下箭號,然後輸入您想要查看的記錄數目,或從清單中選取一個選項。

  6. 按一下 [ 執行 按鈕圖像以執行查詢,然後以 [資料工作表視圖> 顯示結果。

  7. 儲存查詢並將其保持開啟,以用於接下來的步驟。

您可以看到這種類型的熱門值查詢可以回答基本問題,例如公司中最年長或最聰明的人。 接下來的步驟將說明如何使用運算式和其他準則,為查詢增添功能與彈性。 下一個步驟中顯示的準則會返回下三個員工的生日。

在查詢中新增準則

附註: 這些步驟假設您要使用上一節所述的查詢。

  1. 將您先前步驟所建立查詢切換至設計檢視。

  2. 在查詢設計格線中,在 [出生日期] 欄右邊的欄中,複製並貼上或輸入此運算式:Expr1:DatePart ("m",[Birth Date]) 。 然後按一下 [ 執行

    DatePart函數會解壓縮 Birth Date 欄位的月份部分。

  3. 切換到設計檢視。

  4. 第一個運算式的右側,貼上或輸入此運算式:Expr2:DatePart ("d",[Birth Date]) 。 然後按一下 [ 執行

    在此案例中 ,DatePart 函數會解壓縮 Date 欄位的日期部分。

  5. 切換到設計檢視。

  6. 清除您剛才輸入的兩個運算式之 [顯示列> 的核取方塊,按一下每個運算式的排序列,然後選取[遞增

  7. 按一下 [執行]

  8. 您也可以指定準則以限制查詢的範圍。 當您指定準則時,查詢只會排序符合準則的記錄,並識別排序清單中頂端或底部的域值。

    若要繼續範例資料,請切換至設計檢視。 接著,在出生日期欄的準則列中,輸入下列運算式:

    Month ([Birth Date]) > Month (Date () ) or Month ([Birth Date]) = Month (Date () ) And Day ([Birth Date]) >Day (Date () )

    此運算式會執行下列操作:月 ([生日]) > 月份 (日期 () ) 部分 會檢查每個員工的生日,以查看是否落在未來的月份,如果為 True,則包含查詢中的那些記錄。 Month ([Birth Date]) = Month (Date () ) And Day ([Birth Date]) >Day (Date () ) 部分會檢查目前月份中的出生日期,以查看生日落在當天當天或之後。 如果條件為 True,則函數會包含查詢中的那些記錄。 摘要:此運算式會忽略生日落在 1 月 1 日到您執行查詢日期之間的任何記錄。

    若要查看查詢條件運算式的更多範例,請參閱查詢 條件範例一文

  9. [設計索引鍵的查詢設定群組中,按一下 [所有值 (頂端值清單) 旁的向下箭號,然後輸入您想要查看的記錄數目,或從清單中選取一個選項。

    若要查看接下來三個生日,輸入3。

  10. 按一下 [ 執行 按鈕圖像以執行查詢,然後以 [資料工作表視圖> 顯示結果。

如果您看到的記錄超過您的指定

如果您的資料包含多個共用日期值的記錄,您的頂端值查詢可能會回回超過您指定的資料。 例如,您可以設計頂端值查詢來取取三個員工記錄,但查詢會因為「季克特」和「高德生」共用生日而會回回四個記錄,如下表所示。

姓氏

BirthDate

Berka

9/26/1968

傑克森

10/2/1970

愛德華茲

10/15/1965

威爾遜

10/15/1969

如果您看到的記錄比您指定的少

假設您設計查詢以在欄位中回回前五個或最後五個記錄,但查詢只會回回三個記錄。 根據規則,您可以在設計檢視開啟查詢並查看設計格線線中欄的準則資料列,以解決這類問題。

有關準則的資訊,請參閱查詢 準則的範例一文

如果您看到重複的記錄

如果頂端值查詢會返回重複專案,表示基礎資料表包含重複的記錄,或記錄顯示為重複,因為查詢不包含可區分記錄的欄位。 例如,下表顯示查詢的結果,該查詢會返回最近出貨的五筆訂單,以及處理交易之銷售人員的名稱。

ShippedDate

銷售人員

11/12/2004

Fre對

11/12/2004

Cajhen

10/12/2004

德爾加多

10/12/2004

德爾加多

10/12/2004

Fre對

第三和第四個記錄看起來是重複的,但銷售人員 Delgado 可能處理了兩個在同一天出貨的不同訂單。

根據您的需求,您可以執行兩項操作之一來避免重複的記錄。 您可以變更查詢的設計,以新增欄位來協助區分記錄,例如 OrderID 和 CustomerID 欄位。 或者,如果只要查看其中一個重複的記錄就足夠,您可以將查詢的 Unique Values 屬性設定為 Yes,以顯示唯一的記錄。 若要設定此屬性,請在查詢 [設計檢視> 中,以滑鼠右鍵按一下查詢設計工具上半部空白區域中的任何位置,然後按一下 快捷方式功能表上的 [屬性。 在查詢的屬性工作表中,找出Unique Values屬性,然後設為Yes。

有關處理重複記錄的資訊,請參閱尋找、隱藏或刪除 重復資料一文

頁面頂端

尋找類別或群組中記錄的最新或最早日期

您可以使用合計查詢來尋找屬於群組或類別的記錄的最早或最新日期。 合計查詢是一種選取查詢,使用匯總函數 ,例如Min、Max、Sum、First 和 Last 來計算特定欄位的值。

本節中的步驟假設您經營事件管理企業,負責舉辦、光線、飲食服務,以及大型函數的其他層面。 此外,您管理的活動分為數個類別,例如產品上市、街地交易會和集市。 本節中的步驟說明如何回答常見問題:下一個事件何時是按類別? 換句話說,下一次產品上市、下一場演唱會等何時推出。

繼續進行時,請記得下列事項:根據預設,您在此處建立的總查詢類型只能包含包含群組或類別資料的欄位,以及包含日期的欄位。 您無法包含描述類別中專案的其他欄位,例如客戶或供應商名稱。 不過,您可以建立第二個查詢,將合計查詢與包含描述資料的欄位合併。 本節稍後的步驟說明如何執行該工作。

本節中的步驟會假設使用下列三個數據表:

事件種類資料表    

TypeID

事件類型

1

產品上市

2

公司函數

3

Private 函數

4

募款者

5

商展

6

演講

7

音樂會

8

展覽

9

街市集市

[客戶] 資料表    

客戶識別碼

公司

連絡人

1

Contoso, Ltd. 圖形

有安納哈斯

2

Tailspin Toys

Ellen Adams

3

Fabrikam

Carol Philips

4

Wingtip Toys

Lucio Iallo

5

A. 基準

Mandar 3ant

6

冒險工廠

Brian Burke

7

設計學會

Jaka Stele

8

美術學校

Milena Duomanova

事件資料表    

事件識別碼

事件類型

客戶

活動日期

Price

1

產品上市

Contoso, Ltd.

4/14/2003

$10,000

2

公司函數

Tailspin Toys

4/21/2003

$8,000

3

商展

Tailspin Toys

5/1/2003

$25,000

4

展覽

Graphic Design Institute

5/13/2003

$4,500

5

商展

Contoso, Ltd.

5/14/2003

$55,000

6

音樂會

美術學校

5/23/2003

$12,000

7

產品上市

A. 基準

6/1/2003

$15,000

8

產品上市

Wingtip Toys

6/18/2003

$21,000

9

募款者

冒險工廠

6/22/2003

$1,300

10

演講

Graphic Design Institute

6/25/2003

$2,450

11

演講

Contoso, Ltd.

7/4/2003

$3,800

12

街市集市

Graphic Design Institute

7/4/2003

$5,500

附註: 本節中的步驟假設「客戶」和「事件種類」資料表位於「事件」資料表的一對多關聯「一」端。 在這種情況下,事件資料表會共用 CustomerID 和 TypeID 欄位。 如果沒有這些關係,下一節所述的合計查詢將無法執行。

如何將此資料新增到資料庫?

若要將這些範例資料表新增到資料庫,您可以將資料複製到 Excel,然後匯出資料,但有一些例外:

  • 當您將事件種類和客戶資料表複製到 Excel 時,請勿複製 TypeID 和 CustomerID 資料行。 當您輸入工作表時,Access 會新增主鍵值;這為您省下一些時間。

  • 匯出資料表之後,您必須在設計檢視中開啟事件資料表,並將事件種類和客戶資料行轉換為查詢欄位。 若要這麼做, 請按一下每個欄位 的 [資料類型欄,然後按一下 [尋找精靈

    在建立查詢欄位時,Access 會以來源資料表中的數值取代事件種類和客戶資料行中的文字值。

    有關建立和使用查找欄位的資訊,請參閱建立或刪除多重值欄位和多重 值欄位指南等文章。 這兩篇文章都說明如何建立一種可針對特定欄位選取多個值的查找欄位類型,並說明如何建立查找清單。

建立合計查詢

  1. 在 [建立] 索引標籤上,按一下 [查詢] 群組中的 [查詢設計]。

  2. 按兩下您用的資料表。 每個資料表會顯示在查詢設計工具的上方區段。

    如果您使用上述的範例資料表,請新增事件和事件種類資料表。

  3. 按兩下要用於查詢的資料表欄位。 此時,請只將群組或類別欄位和值欄位新增到查詢。

    如果您使用前三個數據表中的範例資料,您可以新增事件種類資料表中的事件種類欄位,或事件資料表中的事件日期欄位。

  4. 或者,您可以指定限制查詢範圍的準則。 只有符合準則的記錄會進行排序,而且會在此排序清單中識別頂端和底部的域值。

    例如,如果您想要在 Private 函數類別中返回事件,您可以在 「事件種類」資料行的「準則」資料列中輸入此運算式:<>「Private Function」。

    若要查看查詢條件運算式的更多範例,請參閱查詢 條件範例一文

  5. 執行下列操作,將查詢轉換為合計查詢:

    [設計] 索引標籤上,按一下 [顯示/隱藏] 群組中的 [合計]

    合計 會出現在設計格線線中。

  6. 請確定每個群組或類別欄位的合計列設定為群組 By,然後將值欄位的合計列 (頂端或底部值的欄位設為) 最大值或最小值。

    Max 會返回數值欄位中的最大值,以及日期/時間欄位中的最新日期或時間值。 Min 會返回數值欄位中的最小值,以及日期/時間欄位中的最早日期或時間值。

  7. [設計索引鍵的查詢設定群組中,按一下 [所有值 (頂端值清單) 旁的向下箭號,然後輸入您想要查看的記錄數目,或從清單中選取一個選項。

    在此例中 ,選取[全部值,然後按一下 [執行 中, 以在 [資料工作表視圖> 中顯示結果。

    附註: 視步驟 6 中選擇的函數不同,Access 會變更查詢中值欄位的名稱,以將 MaxOfFieldNameMinOfFieldName變更。 如果您使用範例資料表,Access 會重新命名MaxOfEventDateMinOfEventDate 欄位

  8. 儲存查詢並前往下一個步驟。

查詢結果不會顯示產品名稱,或產品的其他相關資訊。 若要查看其他資料,您需要建立第二個包含您剛才建立之查詢的查詢。 下列步驟將說明如何執行此操作。

建立第二個查詢以新增更多資料

  1. 在 [建立] 索引標籤上,按一下 [查詢] 群組中的 [查詢設計]。

  2. 按一下 [查詢> 索引 鍵,然後按兩下您于上一節建立的總查詢。

  3. 按一下 [ 資料 表> 索引鍵並新增您用於合計查詢的資料表,也可以新增包含其他關聯資料的任何資料表。 如果您使用前三個範例資料表,請新增事件種類、事件和客戶資料表至新查詢。

  4. 將合計查詢中的欄位聯聯到父資料表中的對應欄位。 若要這麼做,請將合計查詢中的每個欄位拖曳至資料表中的對應欄位。

    如果您使用來自三個數據表的範例資料,請將合計查詢中的事件種類資料行拖曳到事件種類資料表中的事件種類欄位。 接著,將 合計查詢中的 MaxOfEvent Date 資料行拖曳到事件資料表中的事件日期欄位。 建立這些連接可讓您的新選取查詢將合計查詢的資料與其他資料表中的資料結合。

  5. 新增查詢中其他資料表的其他描述欄位。

    如果您使用來自三個數據表的範例資料,可以從客戶資料表新增公司及連絡人欄位。

  6. 或者,為一或多個欄指定排序次序。 例如,若要以字母順序列出類別,請設定事件種類欄的排序列為遞增

  7. 在 [設計] 索引標籤上的 [結果] 群組中,按一下 [執行]。

    查詢的結果會顯示在資料工作表的視圖中。

提示:  如果您不希望價格欄標題顯示為MaxOfPriceMinOfPrice,請以設計檢視開啟查詢,然後于格線的價格欄中輸入Price:MaxOfPricePrice:MinOfPrice。價格 會顯示為數據工作表中的欄標題。

頁面頂端

尋找最新及最早日期

您先前在本文中建立查詢可以返回頂端或底端值,但無法同時返回兩者。 如果您想要在單一視圖中查看這兩組值,您需要建立兩個查詢 ,一個會取回頂端值,另一個會取回最下方值,然後合併並儲存結果到單一資料表中。

尋找頂端和底端值,以及將資料顯示在表格中的過程,遵循下列大步驟:

  • 建立頂端值和底端值查詢,或者如果您需要將資料分組,請建立使用 Min 和 Max 函數的 合計 查詢。

  • 將頂端值查詢 (或最大值查詢) 產生資料表查詢中,然後建立新資料表。

  • 將您的底值查詢 (或 Min 合計查詢) 新增查詢,並將記錄附加到頂端值資料表。

    這些小節中的步驟說明如何執行此操作。

    建立查詢

    1. 建立頂端和底部的值查詢。

      有關建立頂端或底端值查詢所需的步驟,請參閱本文稍 早所說明的尋找最新或最早日期。 如果您需要根據類別將記錄分組,請參閱本文稍早 所說明的類別或群組中記錄的最近或最早日期。

      如果您使用最後一節的範例資料表,請僅使用事件資料表中的資料。 在這兩個查詢中,使用事件資料表中的事件種類、客戶和事件日期欄位。

    2. 使用有意義的名稱儲存每個查詢,例如頂端值和底端值,並保留其開啟狀態,供接下來的步驟使用。

建立產生資料表查詢

  1. 在設計檢視中開啟頂端值查詢:

    [設計] 索引標籤的 [查詢類型] 群組中,按一下 [製成資料表]

    [製成資料表] 對話方塊便會出現。

  2. 資料表名稱方塊 中,輸入儲存頂端和底部記錄之資料表的名稱。 例如,輸入 [頂端和底部記錄,然後按一下 [確定

    每次執行查詢時,查詢會建立資料表,並取代目前資料中的頂端值,而不是在資料工作表中顯示結果。

  3. 儲存並關閉查詢。

建立新增查詢

  1. 在設計檢視中使用底值查詢:

    在 [設計] 索引標籤的 [查詢類型] 群組中,按一下 [新增]。

  2. [新增] 對話方塊就會出現。

  3. 輸入您于 [製作表格> 對話方塊中 輸入的相同 名稱。

    例如,輸入 [頂端和底部記錄,然後按一下 [確定。 每次執行查詢時,查詢不會在資料工作表視圖中顯示結果,而是將記錄附加到頂端和底部記錄資料表。

  4. 儲存並關閉查詢。

執行查詢

  • 您現在已準備好執行這兩個查詢。 在功能窗格中,按兩下頂端值查詢, 然後當 Access 提示您時按一下 [是。 然後按兩下 [底值查詢,然後在Access 提示您時按一下 [是。

  • 在資料工作表視圖中開啟頂端和底部記錄資料表。

重要: 如果您嘗試執行製作表或新增查詢,但似乎沒有任何反應,請查看 Access 狀態列以取得下列訊息:

[巨集指令或事件已經被停用模式封鎖。]

如果您看到該訊息,請執行下列步驟:

  • 如果尚未顯示,請顯示訊息欄。 若要這麼做,請在 [資料庫 工具> 鍵的 [顯示 / 隱藏群組中,按一下訊息

  • 在訊息列上,按一下 [選項]

    [Microsoft Office 安全性選項] 對話方塊即會顯示。

  • 選取 [啟用此內容, 然後按一下 [確定

  • 再次執行查詢。

頁面頂端​​

需要更多協助?

擴展您的技能
探索訓練
優先取得新功能
加入 Microsoft 測試人員

這項資訊有幫助嗎?

您對翻譯品質的滿意度為何?

會影響您使用體驗的因素為何?

是否還有其他的意見反應? (選填)

感謝您的意見反應!

×