適用於:Access 2013 | Access 2016
指定要顯示在包含 GROUP BY 子句的 SELECT 陳述式中,以進行群組的記錄。 在 GROUP BY 合併記錄後,HAVING 顯示由 GROUP BY 子句 (任何滿足 HAVING 子句條件的) 進行群組的記錄。
語法
SELECT fieldlist FROM table WHERE selectcriteria GROUP BY groupfieldlist [HAVING groupcriteria ]
包含 HAVING 子句的 SELECT 陳述式包含三個部分:
| 部分 | 描述 |
|---|---|
| fieldlist | 要與任何欄位名稱別名、SQL 彙總函數、選取述詞 (ALL、DISTINCT、DISTINCTROW 或 TOP) 或其他 SELECT 陳述式選項一起擷取之一個或多個欄位的名稱。 |
| table | 擷取記錄來源的資料表名稱。 如需詳細資訊,請參閱 FROM 子句。 |
| selectcriteria | 選取準則。 如果陳述式包含 WHERE 子句,則 Microsoft Access 資料庫引擎會在將 WHERE 條件套用至記錄後,對值進行分組。 |
| groupfieldlist | 用來將記錄進行群組的欄位 (最多 10 個) 名稱。 groupfieldlist 中的欄位名稱順序決定最高至最低的進行群組層級。 |
| groupcriteria | 決定顯示哪些已進行群組之記錄的運算式。 |
註解
HAVING 是選擇性的。
HAVING 與 WHERE 類似,決定要選取的記錄。 在以 GROUP BY 將記錄進行群組後,以 HAVING 決定要顯示的記錄:
SELECT CategoryID,
Sum(UnitsInStock)
FROM Products
GROUP BY CategoryID
HAVING Sum(UnitsInStock) > 100 And Like "BOS*";
HAVING 子句最多可包含 40 個邏輯運算子,例如 And 和 Or 連結的運算式。
範例
本範例會選取指派給多位華盛頓區員工的職稱。 此範例會呼叫 EnumFields 程序,您可以在 SELECT 陳述式範例中找到該程序。
Sub HavingX()
Dim dbs As Database, rst As Recordset
' Modify this line to include the path to Northwind
' on your computer.
Set dbs = OpenDatabase("Northwind.mdb")
' Select the job titles assigned to more than one
' employee in the Washington region.
Set rst = dbs.OpenRecordset("SELECT Title, " _
& "Count(Title) as Total FROM Employees " _
& "WHERE Region = 'WA' " _
& "GROUP BY Title HAVING Count(Title) > 1;")
' Populate the Recordset.
rst.MoveLast
' Call EnumFields to print recordset contents.
EnumFields rst, 25
dbs.Close
End Sub
另請參閱
- 存取開發人員論壇
- 在 support.office.com 上存取說明
- 存取 UtterAccess 上的論壇
- 存取開發人員和 VBA 程式設計說明中心 (FMS)
- 存取 StackOverflow 上的文章
支援和意見反應
有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應。