我之前在SSRS報告中使用過the Expand/Collapse feature,但在所有這些情況下,它是Reporting Services正在進行分組和總計。這一次,我在我的數據集查詢中利用GROUPING SETS
來讓SQL Server處理聚合數據。我想創建一個具有展開/摺疊功能的報告,但似乎無法使其發揮作用。基於GROUPING SETS的數據集展開 - 摺疊報告
攝製
一起來,這裏有一個方法來得到一個小攝製模仿我的實際情況。使用下面的查詢數據集:
-- Simulating with already denormalized data for sake of simplicity
DECLARE @Order TABLE (Category VARCHAR(20), Product VARCHAR(20), PersonId INT);
INSERT INTO @Order
(Category, Product, PersonId)
VALUES ('Fruit', 'Banana', 1)
,('Fruit', 'Banana', 1)
,('Cakes', 'Chocolate', 1)
,('Fruit', 'Apple', 2)
,('Cakes', 'Chocolate', 2)
,('Cakes', 'Berry Jam', 3)
,('Cakes', 'Chocolate', 3)
,('Cakes', 'Chocolate', 3)
,('Fruit', 'Banana', 4)
,('Cakes', 'Berry Jam', 5)
SELECT Category,
Product,
COUNT(DISTINCT PersonId) AS NrOfBuyers
FROM @Order AS o
GROUP BY GROUPING SETS ((), (Category), (Category, Product))
這將提供輸出,(我已經下令手動輸出來說明我的意圖):
Category Product NrOfBuyers
-------- ------- ----------
Fruit Apple 1
Fruit Banana 2
Fruit NULL 3
Cakes Berry Jam 2
Cakes Chocolate 3
Cakes NULL 4
NULL NULL 5
預示什麼我的目標,這是我想要在Excel中獲得的。
預期結果的擴展版本:
預期的結果倒塌版本:
我試過到目前爲止:
在寫這個問題並創建repro時,我確實意識到我的第一種方法是將我的數據集丟在一個tablix中是錯誤。
所以我試圖解決該問題,重新創建適當行組的表矩陣象這樣:
此外,我需要在左側外羣主列保持總行的切換「+」。
然而,這會產生不正確數字爲摺疊版本:
這些應該是不同的:蛋糕和水果有3個和4個「小計」,分別。
這似乎是與排序行的一個問題,所以我檢查Tablix中的排序和應該爲了行作爲出現在「預期結果」的截圖。事實並非如此,過了一段時間後,我明白了原因:這些團體也進行排序。所以我也爲這些組添加了排序,例如這是一個用於Product
行組:
這似乎改善的東西(它的排序位,我需要反正),但它並沒有解決在摺疊狀態下具有錯誤的號碼。
我需要做些什麼才能完成最後一步並完成報告?