星期三, 3月 06, 2024

[SSRS] 群組和總計

根據官方文章 - 新增群組和總計 的練習,該報表資料來源設定部分,請參考該篇筆記 - [RV] 逐步解說:ReportViewer 報表,該篇筆記就不在紀錄,該報表效果要包含整個報表統計 (Grand Total)、每日訂單統計(Daily Total)、訂單統計 (Order Total) 和訂單明細,下圖為官方文章最後呈現報表



DataSet TSQL 

故意抓特定訂單號碼出來呈現結果就好,避免太多資料
SELECT 
	SOH.OrderDate ,
	SOH.SalesOrderNumber ,
	P.Name AS ProductName ,
	SOD.OrderQty , 
	SOD.UnitPrice ,
	SOD.LineTotal
FROM Sales.SalesOrderHeader AS SOH
	JOIN Sales.SalesOrderDetail AS SOD ON SOH.SalesOrderID = SOD.SalesOrderID
	JOIN Production.Product AS P ON SOD.ProductID = P.ProductID
WHERE SOH.SalesOrderNumber IN (
	'SO74188' , 'SO74190' , 'SO74250' ,
	'SO74266' , 'SO74267')
SSRS 報表設計

報表一開始拉出一個 Tablix 來呈現,橘色箭頭即為資料列群組 [詳細資料] 和 報表設計 [漢堡選單符號資料列] 對應


資料列群組 => 詳細資料 => 加入群組 => 父群組


選擇 OrderDate 為群組依據,不勾選 [加入群組頁首]、[加入群組頁尾] 選項


再新增 SalesOrderNumber 群組
  • 從 OrderDate 角度來看,SalesOrderNumber 群組為子群組
  • 從 [明細資料] 角度來看,SalesOrderNumber 為父群組
下圖為從 OrderDate 為出發點


建立 OrderDate 和 SalesOrderNumber 群組後的資料列群組


建立群組後,報表設計內
  • 藍框為群組資料行、綠框為原本資料行
  • 藍框和綠框之間的欄位分隔線會多兩條虛線分隔
  • 橘色箭頭指的 RowHeader 上除了漢堡選單標記外,會多出兩個左括號,代表有群組設定,因為建立群組時沒有勾選 [加入群組頁首]、[加入群組頁尾],所以只會括住漢堡選單資料列

完成群組設定後,刪除原本 OrderDate 和 SalesOrderNumber 資料欄位


加入總計功能,分別加入 [Order Total]、[Daily Total] 和 [Grand Total] 總計,下圖為加入 [Daily Total] 總計步驟,[之前]、[之後] 代表的是在總計最上方或最下方,該筆記以 [之後 (最下方)] 為主



完成總計設定後並變更各總計資料列背景顏色,橘色箭頭所指 RowHeader 的群組左括號會跨資料列,不在 [漢堡選單符號資料列] 即為總計資料列,會根據群組對象進行彙總統計,另外總計資料列內預設彙總是 SUM(),有其他彙總需求的話,要自行進 [文字方塊屬性] 去更改

在建立群組時的 [加入群組頁尾] 效果,即為新增總計資料列,但只新增總計資料列,不會對欄位進行設定,不會有 SUM(OrderQty)


執行報表結果


沒有留言:

張貼留言