根據官方文章 - 新增群組和總計 的練習,該報表資料來源設定部分,請參考該篇筆記 - [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)
執行報表結果
沒有留言:
張貼留言