使用運算式中的內建報表和彙總函式 (Reporting Services)

Reporting Services 提供用於運算式的內建函數,可用來計算資料集、資料區域和群組中的彙總資料,及擷取其他的資料值,例如報表頁面上的第一個或最後一個值。數值欄位的預設彙總函式是 SUM。在 [運算式] 對話方塊中,在 [一般函數] 中選取類別目錄 [彙總] 以選擇不同的函數。

報表處理器在執行階段結合報表資料和報表配置時,會決定運算式中每個函數參考的預設範圍。預設範圍可以是資料集、資料區域、Tablix 群組 (父、子、相鄰或遞迴)、Tablix 資料列和資料行群組的交集,或是圖表群組 (數列、類別目錄、值)。對大多數函數而言,您也可以在函數呼叫中指定與預設範圍不同的範圍。若要決定函數的有效範圍,請參閱個別的函數參考主題。如需範例,請參閱<計算總計和其他彙總 (Reporting Services)>。

下表列出 Reporting Services 支援的內建函數類別目錄:

  • 計算彙總

  • 計算執行值

  • 擷取資料列計數

  • 從其他資料集查詢值

  • 擷取與排序相依的值

  • 擷取伺服器彙總

  • 擷取遞迴層級

  • 測試範圍

了解範圍

在 Reporting Services 中,範圍一詞可能會因內容而指定不同的概念。下列清單將描述不同的概念:

  • 報表處理中報表項目的範圍。在執行階段結合報表資料和報表配置時,會對每個報表項目進行處理。在處理 Tablix 資料列群組和資料行群組時,會從外部開始處理 Tablix 資料區域,然後再處理到具有較多限制的資料集。也就是說,群組是包含在資料區中。子群組和其同層級群組則都包含在其父群組中。例如,群組的切換項目必須是相同群組範圍或任何包含群組範圍中的文字方塊。如需詳細資訊,請參閱這個主題稍後的「了解包含範圍」。

  • 彙總函式的範圍。報表處理器會評估具名範圍或預設範圍中的每個彙總運算式,如下列清單所示。

    • 具名範圍可能是資料集、資料區域或群組的名稱。

    • 預設範圍是根據報表處理器所評估的報表項目屬性而定。例如,在具有資料列和資料行群組的資料區域中,Tablix 資料格的預設範圍是該資料格所屬的最內層資料列群組及資料行群組。在沒有群組的資料表中,資料格的預設範圍則是詳細資料群組。Tablix 資料區域會在設計介面上提供視覺元素,這些元素有助於決定資料格的可用範圍。群組列會顯示在 Tablix 資料區域的上方及側邊,以顯示屬於某群組的資料列或資料行。當選取資料格時,群組指標會顯示該資料格所屬的使用中最內層群組。如需詳細資訊,請參閱<使用 Tablix 資料區域>。

      至於設計介面上的文字方塊則沒有預設範圍。您必須指定要使用之資料集的名稱,例如 =First(Fields!Sales.Value,"Dataset1")。

      當您呼叫內建函數並指定具名範圍時,請檢查函數參考以判斷有效的範圍。例如,若為 Sum,您就只能指定預設範圍或包含範圍。

了解包含範圍

下列範圍會從最外層 (較高) 到最內層 (較低) 列出包含順序,並描述各自代表的資料。

  • 報表資料集—指定連結到報表主體中的資料區域或報表項目的報表資料集。用於彙總的資料是在套用資料集篩選運算式之後取自報表資料集。

  • 資料區域—指定在套用資料區域篩選和排序運算式之後取自資料區域的資料。在計算資料區域的彙總時,不會使用群組篩選。

  • 資料列和資料行群組—指定在套用群組運算式和群組篩選之後父群組和子群組的資料。為了識別範圍內含項目,每個父群組都會包含其子群組。

  • 巢狀資料區域—針對要加入資料的資料格內容,指定在套用巢狀資料區域篩選和排序運算式之後的巢狀資料區域的資料。

  • 巢狀資料區域的資料列和資料行群組—指定在套用巢狀資料區域的群組運算式和群組篩選之後的資料。

當內建函數指出必須指定目前的範圍或包含範圍時,所指定的範圍在內含項目順序中就不能低於或等於目前範圍。例如,如果在具有子群組的資料列群組中的資料列,就不能將該子群組的名稱指定為範圍,也不能指定同層級資料列群組。您必須使用預設的範圍或指定在內含項目順序中高一層級的範圍。

注意

您不能在單一運算式中同時彙總整個資料列群組和資料行群組的值。在單一運算式中不可以包含一個具有資料列群組範圍的彙總,又包含另一個具有資料行群組範圍的彙總。

篩選運算式

資料集和資料區域篩選運算式不能包含彙總函式。在計算資料區域的彙總時,會忽略群組篩選。

計算彙總

下列內建函數會針對預設範圍或具名範圍,計算非 Null 數值資料集的摘要值。用於彙總計算的所有資料都必須為相同的資料類型。若要將具有多個數值資料類型的資料轉換成相同的資料類型,請使用 CInt、CDbl 或 CDec 等轉換函數。如需詳細資訊,請參閱類型轉換函數

若要使用這些函數來計算遞迴階層群組的摘要,您必須指定 Recursive 參數。

函數

描述

Avg

傳回運算式指定的所有非 Null 數值的平均值 (在給定範圍中評估)。

Count

傳回運算式指定的非 Null 值的計數 (在給定範圍的內容中評估)。

CountDistinct

傳回運算式指定的所有非 Null 相異值的計數 (在給定範圍的內容中評估)。

Max

傳回運算式指定的所有非 Null 數值的最大值 (在給定範圍的內容中)。這個函數可用來指定圖表軸的最大值以控制刻度。

Min

傳回運算式指定的所有非 Null 數值的最小值 (在給定範圍的內容中)。這個函數可用來指定圖表軸的最小值以控制刻度。

StDev

傳回運算式指定的所有非 Null 數值的標準差 (在給定範圍中評估)。

StDevP

傳回運算式指定的所有非 Null 數值的母體標準差 (在給定範圍的內容中評估)。

Sum

傳回運算式指定之所有非 Null 數值的總和 (在給定範圍中評估)。

Union

傳回運算式所指定之 SqlGeometry 或 SqlGeography 類型的所有非 Null 空間資料值聯集 (在給定的範圍中評估)。

Var

傳回運算式指定的所有非 Null 數值的變異數 (在給定範圍中評估)。

VarP

傳回運算式指定的所有非 Null 數值的母體擴展變異數 (在給定範圍的內容中評估)。

計算執行值

下列的內建函數會計算資料集的執行值。RowNumber 與 RunningValue 類似,會傳回累加包含範圍內每個資料列的計數執行值。這些函數的範圍參數必須指定包含範圍,這個範圍控制何時重新開始計數。

函數

描述

RowNumber

傳回指定範圍中資料列數的執行計數。RowNumber 函數從 1 開始重新計數,而不是 0。

RunningValue

傳回運算式指定的所有非 Null 數值的執行彙總 (在給定範圍中評估)。

擷取資料列計數

下列的內建函數會計算給定範圍中的資料列數。這個函數可用來計算所有資料列的數目,包括具有 Null 值的資料列。

函數

描述

CountRows

傳回指定之範圍中的資料列數目,包括具有 Null 值的資料列。

從其他資料集查詢值

下列查閱函數會從指定的資料集擷取值。

函數

描述

Lookup

從指定之運算式的資料集傳回值。

LookupSet

從指定之運算式的資料集傳回一組值。

Multilookup 函數

從包含名稱/值組的資料集傳回第一組符合某一組名稱的值。

擷取與排序相依的值

下列的內建函數會傳回給定範圍內的第一個、最後一個或上一個值。這些函數會視資料值的排序次序而定。舉例而言,這些函數可用來尋找頁面上的第一個和最後一個值,以建立字典樣式的頁首。Previous 可用來比較特定範圍內一個資料列的值與上一個資料列的值,以在資料表中找出年的成長百分比。

函數

描述

First

傳回所指定運算式給定範圍中的第一個值。

Last

傳回所指定運算式給定範圍中的最後一個值。

Previous

傳回項目在指定範圍內上一個執行個體的值或指定的彙總值。

擷取伺服器彙總

下列的內建函數將從資料提供者擷取自訂彙總。例如,您可以使用 Analysis Services 資料來源類型擷取在資料來源伺服器上計算的彙總,以用於群組頁首。

函數

描述

Aggregate

傳回指定運算式的自訂彙總,由資料提供者定義。

測試範圍

下列的內建函數會測試報表項目目前的內容,查看是否為特定範圍的成員。

函數

描述

InScope

指出目前項目的執行個體是否在指定的範圍內。

擷取遞迴層級

下列的內建函數會在系統處理遞迴階層時,擷取目前的層級。在文字方塊中以 Padding 屬性使用此函數的結果,即可控制遞迴群組視覺階層的縮排層級。如需詳細資訊,請參閱<建立遞迴階層群組 (Reporting Services)>。

函數

描述

Level

傳回遞迴階層中之目前所在的層級。

請參閱

概念

使用報表運算式

使用運算式 (Reporting Services)

計算總計和其他彙總 (Reporting Services)