共用方式為


MICROSOFT Access SQL (的 HAVING 子句)

適用於: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 個邏輯運算子,例如 AndOr 連結的運算式。

範例

本範例會選取指派給多位華盛頓區員工的職稱。 此範例會呼叫 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 

另請參閱

支援和意見反應

有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應