教學課程:建立矩陣報表 (報表產生器)

本教學課程會引導您建立 Reporting Services 編頁報表,其中具有巢狀資料列和資料行群組的範例銷售資料矩陣。

您也會建立相鄰的資料行群組、格式化資料行,以及旋轉文字。 下圖顯示的報表與您在本教學課程中建立的報表相似。

Screenshot of a Report Builder matrix report.

完成此教學課程的估計時間:20 分鐘。

需求

如需需求的資訊,請參閱 教學課程的必要條件

1.從新資料表或矩陣精靈中建立矩陣報表和資料集

在本節中,您會選擇共用資料來源、建立內嵌資料集,然後在矩陣中顯示資料。

注意

在本教學課程中,查詢已經包含資料值,因此不需要外部資料來源。 這樣會使查詢相當冗長。 在商業環境中,查詢不會包含資料。 這僅供教學之用。

建立矩陣

  1. 從電腦、Reporting Services Web 入口網站或 SharePoint 整合模式啟動報表產生器

    [新報表或資料集] 對話方塊隨即開啟。

    如果您看不到 [新增報表或資料集] 對話方塊,請按一下 [檔案] 功能表 > [新增]。

  2. 在左窗格中,確認已選取 [新增報表]

  3. 在右窗格中,選取 [資料表或矩陣精靈]。

  4. 在 [選擇資料集] 頁面中,選取 [建立資料集]

  5. 選取 [下一步]。

  6. 在 [選擇資料來源的連線] 頁面中,選取現有的資料來源,或瀏覽至報表伺服器並選取資料來源。 如果沒有資料來源可用,或無法存取報表伺服器,可以改用內嵌資料來源。 如需建立內嵌資料來源的資訊,請參閱教學課程:建立基本資料表報表 (報表產生器)

  7. 選取 [下一步]。

  8. 在 [設計查詢] 頁面中,選取 [當成文字編輯]

  9. 複製下列查詢並貼入查詢窗格中:

    SELECT CAST('2015-01-05' AS date) as SalesDate, 'Central' as Territory, 'Accessories' as Subcategory,'Carrying Case' as Product, CAST(16996.60 AS money) AS Sales, 68 as Quantity  
    UNION SELECT CAST('2015-01-05' AS date) as SalesDate, 'North' as Territory, 'Accessories' as Subcategory, 'Carrying Case' as Product, CAST(13747.25 AS money) AS Sales, 55 as Quantity  
    UNION SELECT CAST('2015-01-05' AS date) as SalesDate, 'South' as Territory, 'Accessories' as Subcategory,'Carrying Case' as Product, CAST(9248.15 AS money) As Sales, 37 as Quantity  
    UNION SELECT CAST('2015-01-05' AS date) as SalesDate, 'Central' as Territory, 'Accessories' as Subcategory,'Tripod' as Product, CAST(1350.00 AS money) AS Sales, 18 as Quantity  
    UNION SELECT CAST('2015-01-05' AS date) as SalesDate, 'North' as Territory, 'Accessories' as Subcategory,'Tripod' as Product, CAST(1800.00 AS money) AS Sales, 24 as Quantity  
    UNION SELECT CAST('2015-01-05' AS date) as SalesDate, 'South' as Territory, 'Accessories' as Subcategory,'Tripod' as Product, CAST(1125.00 AS money) AS Sales, 15 as Quantity  
    UNION SELECT CAST('2015-01-05' AS date) as SalesDate, 'Central' as Territory, 'Accessories' as Subcategory,'Lens Adapter' as Product, CAST(1147.50 AS money) AS Sales, 17 as Quantity  
    UNION SELECT CAST('2015-01-05' AS date) as SalesDate, 'North' as Territory, 'Accessories' as Subcategory,  'Lens Adapter' as Product, CAST(742.50 AS money) AS Sales, 11 as Quantity  
    UNION SELECT CAST('2015-01-05' AS date) as SalesDate, 'South' as Territory, 'Accessories' as Subcategory,'Lens Adapter' as Product, CAST(1417.50 AS money) AS Sales, 21 as Quantity  
    UNION SELECT CAST('2015-01-06' AS date) as SalesDate, 'Central' as Territory, 'Accessories' as Subcategory, 'Carrying Case' as Product, CAST(13497.30 AS money) AS Sales, 54 as Quantity  
    UNION SELECT CAST('2015-01-06' AS date) as SalesDate, 'North' as Territory, 'Accessories' as Subcategory, 'Carrying Case' as Product, CAST(11997.60 AS money) AS Sales, 48 as Quantity  
    UNION SELECT CAST('2015-01-06' AS date) as SalesDate, 'South' as Territory, 'Accessories' as Subcategory, 'Carrying Case' as Product, CAST(10247.95 AS money) As Sales, 41 as Quantity  
    UNION SELECT CAST('2015-01-06' AS date) as SalesDate, 'Central' as Territory, 'Accessories' as Subcategory, 'Tripod' as Product, CAST(1200.00 AS money) AS Sales, 16 as Quantity  
    UNION SELECT CAST('2015-01-06' AS date) as SalesDate, 'North' as Territory, 'Accessories' as Subcategory,'Tripod' as Product, CAST(2025.00 AS money) AS Sales, 27 as Quantity  
    UNION SELECT CAST('2015-01-06' AS date) as SalesDate, 'South' as Territory, 'Accessories' as Subcategory,'Tripod' as Product, CAST(1425.00 AS money) AS Sales, 19 as Quantity  
    UNION SELECT CAST('2015-01-06' AS date) as SalesDate, 'Central' as Territory, 'Accessories' as Subcategory,'Lens Adapter' as Product, CAST(887.50 AS money) AS Sales, 13 as Quantity  
    UNION SELECT CAST('2015-01-06' AS date) as SalesDate, 'North' as Territory, 'Accessories' as Subcategory, 'Lens Adapter' as Product, CAST(607.50 AS money) AS Sales, 9 as Quantity  
    UNION SELECT CAST('2015-01-06' AS date) as SalesDate, 'South' as Territory, 'Accessories' as Subcategory,'Lens Adapter' as Product, CAST(1215.00 AS money) AS Sales, 18 as Quantity  
    UNION SELECT CAST('2015-01-05' AS date) as SalesDate,  'Central' as Territory, 'Digital' as Subcategory,'Compact Digital' as Product, CAST(10191.00 AS money) AS Sales, 79 as Quantity  
    UNION SELECT CAST('2015-01-05' AS date) as SalesDate,  'North' as Territory, 'Digital' as Subcategory, 'Compact Digital' as Product, CAST(8772.00 AS money) AS Sales, 68 as Quantity  
    UNION SELECT CAST('2015-01-05' AS date) as SalesDate,  'South' as Territory, 'Digital' as Subcategory, 'Compact Digital' as Product, CAST(10578.00 AS money) AS Sales, 82 as Quantity  
    UNION SELECT CAST('2015-01-05' AS date) as SalesDate, 'Central' as Territory,'Digital' as Subcategory, 'Slim Digital' as Product, CAST(7218.10 AS money) AS Sales, 38 as Quantity  
    UNION SELECT CAST('2015-01-05' AS date) as SalesDate, 'North' as Territory,'Digital' as Subcategory, 'Slim Digital' as Product, CAST(8357.80 AS money) AS Sales, 44 as Quantity  
    UNION SELECT CAST('2015-01-05' AS date) as SalesDate, 'South' as Territory,'Digital' as Subcategory,'Slim Digital' as Product, CAST(9307.55 AS money) AS Sales, 49 as Quantity  
    UNION SELECT CAST('2015-01-06' AS date) as SalesDate,  'Central' as Territory, 'Digital' as Subcategory,'Compact Digital' as Product, CAST(3870.00 AS money) AS Sales, 30 as Quantity  
    UNION SELECT CAST('2015-01-06' AS date) as SalesDate,  'North' as Territory, 'Digital' as Subcategory,'Compact Digital' as Product, CAST(5805.00 AS money) AS Sales, 45 as Quantity  
    UNION SELECT CAST('2015-01-06' AS date) as SalesDate,  'South' as Territory, 'Digital' as Subcategory, 'Compact Digital' as Product, CAST(8643.00 AS money) AS Sales, 67 as Quantity  
    UNION SELECT CAST('2015-01-06' AS date) as SalesDate, 'Central' as Territory, 'Digital' as Subcategory, 'Slim Digital' as Product, CAST(9877.40 AS money) AS Sales, 52 as Quantity  
    UNION SELECT CAST('2015-01-06' AS date) as SalesDate, 'North' as Territory, 'Digital' as Subcategory, 'Slim Digital' as Product, CAST(12536.70 AS money) AS Sales, 66 as Quantity  
    UNION SELECT CAST('2015-01-06' AS date) as SalesDate, 'South' as Territory, 'Digital' as Subcategory, 'Slim Digital' as Product, CAST(6648.25 AS money) AS Sales, 35 as Quantity  
    
  10. (選用) 選取 [執行] 圖示 (!) 執行查詢並查看資料。

  11. 選取 [下一步]。

2.在新資料表或矩陣精靈中組織資料並選擇配置

使用精靈提供起始設計來顯示資料。 精靈中的預覽窗格可協助您在完成矩陣設計之前,先視覺化群組資料的結果。

  1. 在 [排列欄位] 頁面上,從 [可用的欄位] 將 [Territory] 拖曳至 [資料列群組]。

  2. 將 [銷售日期] 拖曳至 [資料列群組] 並放置在 [國家/地區] 之下。

    欄位列於 [資料列群組] 中的順序定義了群組階層。 步驟 1 和步驟 2 會先依領域再依銷售日期,組織欄位的值。

  3. 將 [Subcategory] 拖曳至 [資料行群組]。

  4. 將 [產品] 拖曳至 [資料行群組] 並放置在 [子類別] 之下。

    同樣地,欄位列於 [資料行群組] 中的順序定義了群組階層。 步驟 3 和步驟 4 會先依子類別目錄再依產品,組織欄位的值。

  5. 將 [Sales] 拖曳至 [值]。

    [Sales] 是使用 Sum 函數進行摘要,此為摘要數值欄位的預設函數。

  6. 將 [Quantity] 拖曳至 [值]。

    [Quantity] 是使用 Sum 函數進行摘要。

    步驟 5 和步驟 6 指定了矩陣資料格要顯示的資料。

    Screenshot that shows the Report Builder arrange fields Report Wizard.

  7. 選取 [下一步]。

  8. 在 [選擇配置] 頁面的 [選項] 下方,確定已選取 [顯示小計和總計]。

  9. 驗證已選取 [區塊式,小計位於下方]。

  10. 確定已選取 [展開/摺疊群組] 選項。

  11. 選取 [下一步] 。

  12. 選取完成

    矩陣會加入至設計介面。 [資料列群組] 窗格會顯示兩個資料列群組:Territory 和 SalesDate。 [資料行群組] 窗格會顯示兩個資料行群組:Subcategory 和 Product。 詳細資料是資料集查詢擷取的所有資料。

    Screenshot that shows the Report Builder Row Groups and Column Groups.

  13. 選取 [執行] 預覽報表。

    矩陣會針對特定日期銷售的每個產品,顯示產品所屬的子類別目錄和銷售領域。

  14. 展開子類別 您可以看到報表很快變寬。

Screenshot that shows an expanded Report Builder matrix report.

3.將資料格式化

根據預設,[Sales] 欄位的摘要資料會顯示一般數字,而 [SalesDate] 欄位會顯示日期加上時間資訊。 在本節中,您會格式化以使 [Sales] 欄位將數字顯示為貨幣,讓 [SalesDate] 欄位只顯示日期。 切換 [預留位置樣式],將格式化的文字方塊和預留位置文字顯示為範例值。

將欄位格式化

  1. 選取 [設計],切換到 [設計] 檢視。

  2. 按下 Ctrl 鍵,然後選取包含 [Sum(Sales)]的 9 個資料格。

  3. 在 [主資料夾] 索引標籤 > [數字]>[貨幣] 上。 這些資料格就會變更為顯示格式化貨幣。

    如果您的地區設定為 [英文 (美國)],則預設範例文字會是 [ $12,345.00]。 如果 [數字] 群組中未顯示範例貨幣值,請選取 [預留位置樣式]>[範例值]。

    Screenshot of the Report Builder Sample Values option.

  4. 選取包含 [SalesDate]的資料格。

  5. 在 [數字] 群組中,轉至 [日期]

    資料格就會顯示範例日期 [1/31/2000] 。 如果您看不到範例日期,請選取 [數字] 群組中的 [預留位置樣式],然後選取 [範例值]。

  6. 選取 [執行] 預覽報表。

日期值如今只顯示日期,而銷售值顯示為貨幣。

4.加入相鄰資料行群組

您可以將資料列和資料行群組巢狀套疊為父子關聯性,或彼此相鄰的同層級關聯性。

在本節中,您會新增一個與 [子類別] 資料行群組相鄰的資料行群組,複製資料格以填入新資料行群組,然後使用運算式建立資料行群組標頭的值。

加入相鄰資料行群組

  1. 選取 [設計] 返回設計檢視。

  2. 以滑鼠右鍵按一下包含 [Subcategory] 的資料格,並指向 [新增群組],然後選取 [右方相鄰]

    [Tablix 群組] 對話方塊隨即開啟。

  3. 在 [分組方式] 清單中選取 [銷售日期],然後選取 [確定]

    新的資料行群組就會新增到 Subcategory 資料行群組的右邊。

  4. 以滑鼠右鍵按一下新資料行群組中包含 [SalesDate], 的資料格,然後選取 [運算式]

  5. 將下列運算式複製到 [運算式] 方塊中。

    =WeekdayName(DatePart("w",Fields!SalesDate.Value))  
    

    此運算式會從銷售日期擷取星期幾。 如需詳細資訊,請參閱編頁報告中的運算式 (報表產生器)。

  6. 以滑鼠右鍵按一下 [子類別] 資料行群組中包含 [總計] 的資料格,然後選取 [複製]

  7. 以滑鼠右鍵按一下您在步驟 5 中建立之運算式所在資料格正下方的資料格,然後選取 [貼上]

  8. 按下 Ctrl 鍵。

  9. 在 [子類別] 群組中,選取 [銷售] 資料行標頭及其下方的三個資料格,以滑鼠右鍵按一下,然後選擇 [複製]

  10. 將這四個資料格貼至新資料行群組中的四個空白資料格。

  11. 選取 [執行] 預覽報表。

報表多出兩個資料行,名為「星期一」和「星期二」。 資料集只包含這兩天的資料。

Screenshot that shows weekdays displayed in the Report Builder matrix report.

注意

如果資料中還有別的星期,報表也會納入其資料行。 每個資料行包含各領域的總銷售額,而資料行標頭是 [Sales]。

5.變更資料行寬度

含有矩陣的報表在執行時,通常會水平且垂直地展開。 若您打算將報表匯出為印刷報表採用的格式,如 Microsoft Word 或 Adobe PDF,控制水平展開程度就很重要。 如果報表水平地展開成跨多個頁面,將造成印刷報表難以判讀。 為了盡量減少水平展開程度,您可將資料行寬度調整成以不換行的方式顯示資料所需的量。 您也可以重新命名資料行,使顯示資料所需的寬度恰能容納其標題。

資料行重新命名與調整大小

  1. 選取 [設計] 返回設計檢視。

  2. 選取離左邊最遠的 [Quantity] 資料行中的文字,然後鍵入 QTY

    該資料行標題現已變成 QTY。

  3. 針對名為 Quantity 的其餘兩個資料行重複步驟 2,

  4. 選取矩陣,使資料行和資料列控制代碼出現在矩陣的上面和旁邊。

    沿著資料表頂端和側邊的灰色長條是資料行和資料列控點。

    Screenshot for the column and row handles in the Report Builder matrix report.

  5. 首先要調整矩陣最左邊 QTY 資料行的大小:指向該資料行控點之間的線條,使游標變成雙箭頭。 將資料行往左拖曳,直到其寬度為 0.5 英吋。

    要顯示數量的資料行有 0.5 英吋寬就已足夠。

  6. 針對名為 QTY 的其餘資料行重複步驟 5。

  7. 選取 [執行] 預覽報表。

包含數量的資料行現在較窄,而且名為 QTY。

6.合併矩陣資料格

邊角區域是位於矩陣的左上角。 邊角區域內的資料格數目,會隨矩陣中的資料列與資料行群組數目而有所不同。 本教學課程建置的矩陣其邊角區域內有四個資料格。 這些資料格排成兩列兩欄,反映了資料列與資料行群組階層的深度。 本報表用不到這四個資料格,因此可將其合併為單一資料格。

合併矩陣資料格

  1. 選取 [設計] 返回設計檢視。

  2. 選取矩陣,使資料行和資料列控制代碼出現在矩陣的上面和旁邊。

  3. 按下 Ctrl 鍵,然後選取四個邊角資料格。

  4. 以滑鼠右鍵按一下資料格,然後選取 [合併資料格]

  5. 以滑鼠右鍵按一下新的合併儲存格,然後選取 [文字輸入框屬性]

  6. 在 [框線] 索引標籤 > [預設]>[無]。

  7. 選取 [確定]。

  8. 選取 [執行] 預覽報表。

不再顯示矩陣上方角落的資料格。

7.加入報表標頭和報表標題

報表標題會出現在報表的頂端。 可以將報表標題放置在報表頁首,如果報表不使用報表頁首,則可以放置在報表主體頂端的文字輸入框中。 在本教學課程中,移除報表頂端的文字輸入框,然後將標題加入標頭。

7.加入報表標頭和報表標題

  1. 選取 [設計] 返回設計檢視。

  2. 選取報表主體頂端包含 [按一下以新增標題] 的文字方塊,然後按 Delete 鍵。

  3. 在 [插入] 索引標籤中,轉至 [標頭>新增標頭]。

    頁首就會加入至報表主體頂端。

  4. 在 [插入] 索引標籤中,選取 [文字輸入框],然後將文字輸入框拖曳至報表標頭。 將文字方塊調整成長約 6 英吋且高約 3/4 英吋,然後放到報表頁首的左側。

  5. 在文字輸入框中,鍵入 [按國家/地區劃分的銷售]、[子類別] 和 [日期]

  6. 在 [首頁] 索引標籤的 > [字型] 中,選取您輸入的文字:

    • 大小 24 pt
    • 色彩 暗紅色
  7. 選取 [執行] 預覽報表。

在報表中,報表頁首包含報表標題。

8.儲存報表

您可以將報表儲存至報表伺服器、SharePoint 文件庫或您的電腦上。

本教學課程會將報表儲存至報表伺服器。 如果您沒有報表伺服器的存取權,請將報表儲存在電腦中。

將報表儲存在報表伺服器上

  1. 在 [報表產生器] 按鈕中,選取 [另存新檔]

  2. 選取 [最近使用的網站和伺服器]。

  3. 選取或輸入您有權儲存報表之報表伺服器的名稱。

    「正在連接到報表伺服器」訊息隨即顯示。 連接完成時,您會看見報表伺服器管理員指定為預設報表位置之報表資料夾的內容。

  4. 在 [名稱] 中,將預設名稱取代為 SalesByTerritorySubcategory

  5. 選取 [儲存]。

報表就會儲存至報表伺服器。 您連接之報表伺服器的名稱會顯示在視窗底部的狀態列中。

將報表儲存到您的電腦中

  1. 在 [報表產生器] 按鈕中,選取 [另存新檔]

  2. 選取 [桌面]、[我的文件] 或 [我的電腦],然後瀏覽到您要儲存報表的資料夾。

  3. 在 [名稱] 中,將預設名稱取代為 SalesByTerritorySubcategory

  4. 選取 [儲存]。

9.(選用) 將文字輸入框旋轉 270 度

含有矩陣的報表在執行時,可能會水平且垂直地展開。 如果將文字方塊旋轉 270 度 (垂直旋轉),就比較不佔水平空間。 這樣轉譯後的報表將會變窄,且若匯出為 Microsoft Word 等格式,則大概都能容納於單一列印頁面上。

文字方塊也可以將文字顯示成水平、垂直 (由上而下) 的方向。 如需詳細資訊,請參閱編頁報表中的文字輸入框 (報表產生器)

將文字輸入框旋轉 270 度

  1. 選取 [設計] 返回設計檢視。

  2. 選取包含的資料格。 [Territory].

    注意

    請選取資料格,而非文字。 WritingMode 屬性只適用於資料格。

    Screenshot that shows the Territory cell in the Report Builder matrix report.

  3. 在 [屬性] 窗格中,找出 WritingMode 屬性,並將其從 [預設] 變更為 [Rotate270]。

    如果 [屬性] 窗格並未開啟,請選取功能區的 [檢視] 索引標籤,然後選取 [屬性]

  4. 確認 CanGrow 屬性已設定為 True

  5. 在 [主資料夾] 索引標籤 > [段落] 區段上,選取 [中間] 和 [置中],將文字定位在儲存格的垂直及水平中心。

  6. 將 [Territory] 資料行的寬度調整成 0.5 英吋,並刪除資料行標題。

  7. 選取 [執行] 預覽報表。

領域名稱的寫法為由上而下的垂直方向。 Territory 資料列群組的高度會依領域名稱的長度而變化。

下一步

您已成功完成如何建立矩陣報表的教學課程。 如需矩陣的詳細資訊,請參閱: