共用方式為


總計、匯總和內建集合的表達式範圍(報表產生器及 SSRS)

當您撰寫表示式時,您會發現字詞 範圍 用於多個內容中。 範圍可以指定要用於評估表達式的數據、呈現頁面上的文字框集合、以及可以根據切換顯示或隱藏的報表項目集合。 您將會在與表達式評估、聚合函數語法、條件可見性相關的主題,以及相關錯誤訊息中看到詞彙 範圍。 使用下列描述來協助區分 適用範圍 的意義:

  • 數據範圍 數據範圍是報表處理器用來結合報表數據和報表配置的範圍階層,並建置數據區域,例如要顯示數據的數據表和圖表。 了解數據範圍可協助您在執行下列動作時取得想要的結果:

    • 撰寫使用聚合函數的表達式 指定要匯總的數據。 報表中表達式的位置會影響哪些數據在匯總計算範圍內。

    • 將走勢圖新增至數據表或矩陣 指定圖表座標軸的最小和最大範圍,以對齊數據表或矩陣中的巢狀實例。

    • 將指標新增至數據表或矩陣 為量測計指定最小和最大刻度,以對齊數據表或矩陣中的巢狀實例。

    • 撰寫排序表達式 指定一個包含的範圍,您可以用來同步處理多個相關報表項目之間的排序順序。

  • 單元格範圍 數據格範圍是數據格所屬 Tablix 數據區中的數據列和數據行群組集。 根據預設,每個 Tablix 單元格都包含文字框。 文字框的值是表達式。 單元格的位置會間接決定您可以在表達式中為匯總計算指定的數據範圍。

  • 報表專案範圍 報表專案範圍是指轉譯報表頁面上的專案集合。 報表處理器會結合數據和報表配置元素,以產生已編譯的報表定義。 在此程式中,數據表和矩陣等數據區域會視需要展開以顯示所有報表數據。 然後,編譯的報表會由報表轉譯器處理。 報表渲染器會決定各頁面上顯示的報表項目。 在報表伺服器上,每一頁都會在您檢視時呈現。 當您匯出報表時,會轉譯所有頁面。 瞭解報表專案範圍可協助您在執行下列動作時取得想要的結果:

    • 新增切換項目 指定文字框以新增控制報表項目可見性的切換功能。 您只能將切換新增至您想要切換之報表專案範圍內的文字框。

    • 在頁首和頁尾中撰寫表達式 在文本框或其他出現在轉譯頁面上的報表專案中指定表達式中的值。

瞭解範圍可協助您成功撰寫表達式,以提供您想要的結果。

備註

您可以在報表產生器及 SQL Server Data Tools 的報表設計師中建立和修改報表定義 (.rdl)。 每個撰寫環境提供不同的方式來建立、開啟及儲存報表和相關專案。 如需詳細資訊,請至 microsoft.com 網站上查看 報表設計師和報表產生器 (SSRS) 的報表設計

了解數據範圍和數據階層

數據範圍會指定一組報表數據。 數據範圍具有內在包含關係的自然階層。 階層上較高的範圍包含階層上較低的範圍。 下列資料範圍清單描述階層順序從大部分資料到最少的數據:

  • 套用數據集篩選之後的數據集 指定連結至數據區或報表主體中報表項目的報表數據集。 用於匯總的數據是在套用數據集篩選表達式之後,來自報表數據集。 對於共用數據集,這表示共用數據集定義中的篩選和報表中共用數據集實例中的篩選。

  • 數據區域 在套用數據區域篩選和排序表達式之後,指定來自數據區的數據。 計算數據區域的匯總時,不會使用群組篩選。

  • 套用群組篩選之後的數據區域群組 指定在父群組和子群組套用群組表達式和群組篩選之後的數據。 針對數據表,這是數據列和數據行群組。 在圖表中,這指的是數據系列和類別群組。 為了識別範圍的界定,每個父群組都包含其子群組。

  • 巢狀數據區域 指定在已加入的儲存格上下文中巢狀數據區的數據,並在套用巢狀數據區的篩選和排序表達式後。

  • 巢狀數據區的數據列和數據行群組 指定套用巢狀數據區群組表達式和群組篩選之後的數據。

當您撰寫包含聚合函數的表達式時,瞭解容器範圍和被包含範圍很重要。

單元格範圍和表達式

當您指定範圍時,您會向報表處理器指出要用於匯總計算的數據。 根據表達式和表達式的位置,有效的範圍可能是 包含範圍,也稱為父範圍,或 包含的範圍,也稱為子範圍或巢狀範圍。 一般而言,您無法在匯總計算中指定個別群組實例。 您可以在所有群組實例中指定彙總。

當報表處理器結合報表數據集中的數據與 Tablix 數據區時,它會評估群組運算式,並建立代表群組實例所需的數據列和數據行。 每個 Tablix 單元格中文本框的運算式值,都會在儲存格範圍的內容中進行評估。 根據 Tablix 結構,儲存格可以屬於多個資料列群組和數據行群組。 針對聚合函數,您可以使用下列其中一個範圍來指定要使用的範圍:

  • 默認範圍 報表處理器評估表達式時,計算範圍中的數據。 預設範圍是儲存格或數據點所屬的最內部群組集。 若為 Tablix 數據區,集合可以包含數據列和數據行群組。 針對圖表數據區,集合可以包含類別和數列群組。

  • 具名範圍 表達式範圍內數據集、數據區或數據區群組的名稱。 針對匯總計算,您可以指定包含的範圍。 您無法在單一表示式中指定資料列群組和資料行群組的具名範圍。 除非表達式用於嵌套的集合體,否則您無法指定包含範圍。

    下列表達式會產生 SellStartDate 與 LastReceiptDate 之間的間隔年份。 這些欄位位於兩個不同的數據集 DataSet1 和 DataSet2 中。 第一個函數(報表產生器及 SSRS)是聚合函數,會傳回 DataSet1 中 SellStartDate 的第一個值,以及 DataSet2 中 LastReceiptDate 的第一個值。

    =DATEDIFF("yyyy", First(Fields!SellStartDate.Value, "DataSet1"), First(Fields!LastReceiptDate.Value, "DataSet2"))  
    
  • 網域範圍 也稱為同步處理範圍。 適用於巢狀數據區表示式評估的數據範圍類型。 定義域範圍可用來指定群組所有實例的匯總,讓巢狀實例能夠對齊並輕鬆地進行比較。 例如,您可以對齊內嵌在數據表中的走勢圖的範圍和高度,讓值對齊。

在報表的某些位置中,您必須指定範圍。 例如,針對設計介面上的文字框,您必須指定要使用的數據集名稱: =Max(Fields!Sales.Value,"Dataset1")。 在其他位置中,有隱含的默認範圍。 例如,如果您未在群組範圍中指定文本框的匯總,系統將使用預設值「First」。

每個聚合函數主題都會列出其使用的有效範圍。 如需詳細資訊,請參閱聚合函數參考(報表產生器及 SSRS)。

數據表數據區的匯總表達式範例

若要撰寫指定非預設範圍的表達式,需要一些做法。 若要協助您瞭解不同的範圍,請使用下圖和表格。 圖表為銷售資訊表中的每個數據格進行標示,該表顯示不同年份和季度以及各銷售區域的銷售項目數量。 請注意數據列句柄和數據行句柄上的視覺提示,它們顯示了數據列和數據行的群組結構,表明存在巢狀群組。 資料表具有下列結構:

  • 數據表標頭,其中包含角落數據格,以及包含數據行群組標頭的三個數據列。

  • 以名為 Cat 的類別和名為 SubCat 的子類別為基礎的兩個巢狀數據列群組。

  • 根據年份和季度命名為 Year 和 Qtr 的兩個巢狀欄位群組。

  • 一個標示為 Totals 的靜態總計數據行。

  • 一個相鄰欄位群組,以名為 Territory 的銷售區域為基礎。

領域群組的數據行標頭已分割成兩個單元格以供顯示之用。 第一個儲存格會顯示地區的名稱和總計,而第二個儲存格中有佔位文字,用以計算顯示每個地區對所有銷售的百分比貢獻。

rs_BasicTableSumCellScope

假設數據集名為 DataSet1,且數據表名為 Tablix1。 下表列出儲存格標籤、預設範圍和範例。 佔位元文字的值會顯示在表達式語法中。

資料格 默認範圍 佔位符號標籤 文字或佔位符值
C01 Tablix1 [Sum(Qty)] 聚合和範圍

=Sum(Fields!Qty.Value)
C02 外部資料行群組「年份」 [年份]

([YearQty])
=Fields!Year.Value

=Sum(Fields!Qty.Value)
C03 Tablix1 [合計(數量)] 總計

=Sum(Fields!Qty.Value)
C04 同層列組「範圍」 ([總計]) 領域

=Sum(Fields!Qty.Value)
C05 內部群組 ‘Qtr’ [Qtr]

([QtrQty])
Q

=Fields!Qtr.Value

=Sum(Fields!Qty.Value)
C06 同行列群組 "Territory" 領土

([Tty])

[百分比]
=Fields!Territory.Value

=Sum(Fields!Qty.Value)

=FormatPercent(Sum(Fields!Qty.Value,"Territory")/Sum(Fields!Qty.Value,"Tablix1"),0) & " of " & Sum(Fields!Qty.Value,"Tablix1")
C07 最外層列群組「Cat」 [貓]

[Sum(Qty)]
=Fields!Cat.Value

=Sum(Fields!Qty.Value)
C08 與 C07 相同
C09 外部數據列群組 “Cat” 和內部數據行群組 “Qtr” [總和(數量)] =Sum(Fields!Qty.Value)
C10 與 C07 相同 <<Expr>> =Sum(Fields!Qty.Value) & ": " & FormatPercent(Sum(Fields!Qty.Value)/Sum(Fields!Qty.Value,"Tablix1"),0) & " of " & Sum(Fields!Qty.Value,"Tablix1")
C11 外部數據列群組 “Cat” 和數據行群組 “Territory” <<Expr>> =Sum(Fields!Qty.Value) & ": " & FormatPercent(Sum(Fields!Qty.Value)/Sum(Fields!Qty.Value,"Territory"),0) & " of " & Sum(Fields!Qty.Value,"Territory")
C12 內部數據列群組 “Subcat” [Subcat]

[總和(數量)]
=Fields!SubCat.Value

=Sum(Fields!Qty.Value)
C13 內部數據列群組 “Subcat” 和內部數據行群組 “Qtr” [總和(數量)] =Sum(Fields!Qty.Value)
C14 內部數據列群組 “Subcat” <<Expr>> =Sum(Fields!Qty.Value) & ": " & FormatPercent(Sum(Fields!Qty.Value)/Sum(Fields!Qty.Value,"Cat"),0) & " of " & Sum(Fields!Qty.Value,"Cat")
C15 內部數據列群組 “Subcat” 和數據行群組 “Territory” <<Expr>> =Sum(Fields!Qty.Value) & ": " & FormatPercent(Code.CalcPercentage(Sum(Fields!Qty.Value),Sum(Fields!Qty.Value,"Cat")),0) & " of " & Sum(Fields!Qty.Value,"Cat")

如需在 Tablix 數據區上解譯視覺提示的詳細資訊,請參閱 Tablix 數據區數據格、數據列和數據行 (報表產生器) 和 SSRS。 如需 Tablix 數據區的詳細資訊,請參閱 Tablix 數據區數據格、數據列和數據行 (報表產生器) 和 SSRS。 如需表達式和匯總的詳細資訊,請參閱報表中的表達式使用方式(報表產生器及 SSRS)聚合函數參考(報表產生器及 SSRS)。

同步處理走勢圖的尺規

若要比較數據表或矩陣中巢狀走勢圖的水平軸上一段時間的值,您可以同步處理類別群組值。 這稱為對齊軸。 藉由選取對齊座標軸的選項,報表會自動設定座標軸的最小值和最大值,併為不存在於每個類別中的匯總值提供佔位元。 這個功能會使走勢圖中的值在每個類別中對齊,並可讓您比較每一列匯總數據的值。 藉由選取此選項,您會將表達式評估的範圍變更為 定義域範圍。 設定巢狀圖表的領域範圍也會間接控制圖例中每個類別的顏色分配。

例如,在顯示每周趨勢的走勢圖中,假設某個城市有 3 個月的銷售數據,而另一個城市則有 12 個月的銷售數據。 如果沒有同步調整規模,第一個城市的走勢圖只會有 3 個橫條,而且它們會更寬,並佔用與第二個城市 12 個月酒吧集相同的空間。

如需詳細資訊,請參閱在數據表或矩陣中對齊圖表中的數據(報表產生器及 SSRS)。

同步指標範圍

若要指定要用於一組指標的數據值,您必須指定範圍。 根據包含指標的數據區的佈局,您可以指定一個範圍或一個包含範圍。 例如,在與類別銷售相關聯的群組標頭數據列中,一組箭號(向上、向下、側向)可以指出相對於閾值的銷售值。 包含範圍是包含指標的數據表或矩陣名稱。

如需詳細資訊,請參閱設定同步處理範圍(報表產生器及 SSRS)。

從頁首或頁尾指定範圍

若要在報表的每個頁面上顯示不同的數據,您可以將表達式新增至必須在轉譯頁面上的報表專案。 因為報表在轉譯時會分割成頁面,所以只有在轉譯期間,才能判斷頁面上存在哪些專案。 例如,詳細數據列中的儲存格具有一個文字框,其頁面上有許多實例。

為此,有一個名為 ReportItems 的全域集合。 這是目前頁面上的文字框集。

如需詳細資訊,請參閱頁首和頁尾(報表產生器及 SSRS)ReportItems 集合參考(報表產生器及 SSRS)。

指定深入分析和條件式可見性的切換項目

切換是加上於文本框的加號或減號圖像,使用者可以按下這些圖像來顯示或隱藏其他報表項目。 在大部分報表項目屬性的可見性頁面上,您可以指定要新增切換選項的報表項目。 切換項目必須位於高於要顯示或隱藏之專案的內含專案範圍中。

在 Tablix 資料區域中,若要建立下拉效果,您可以點擊文字框以展開表格顯示更多資料,您必須在群組上設定 Visibility 屬性,並在群組標頭中選擇作為切換的文字框,該標頭與包含群組相關聯。

如需詳細資訊,請參閱將展開或折疊動作新增至專案(報表產生器及 SSRS)。

指定要同步排序順序的排序表達式

當您將互動式排序按鈕新增至資料表資料行時,您可以同步處理具有通用包含範圍之多個專案的排序。 例如,您可以將排序按鈕新增至矩陣中的數據行標頭,並將包含範圍指定為系結至矩陣的數據集名稱。 當使用者按下排序按鈕時,不僅會排序矩陣數據列,也會排序系結至相同日期集的圖表數列群組。 如此一來,相依於該數據集的所有數據區域都可以同步處理以顯示相同的排序順序。

如需詳細資訊,請參閱篩選、群組和排序數據(報表產生器及 SSRS)。

隱藏儲存格中的 Null 或零值

對於許多報表,範圍設定為群組的計算可以建立許多具有零 (0) 或 Null 值的儲存格。 若要減少報表中的雜亂,請在匯總值為 0 時新增運算式以傳回空白。 如需詳細資訊,請參閱 表達式範例(報表產生器及 SSRS)中的<隱藏 Null 或零值的範例>。

另請參閱

運算式範例 (報表產生器及 SSRS)
群組表示式範例 (報表產生器及 SSRS)
建立遞迴階層群組 (報表產生器及 SSRS)
清單(報表產生器及 SSRS)
格式化文字和預留位置 (報表產生器及 SSRS)